Skip to content
This repository was archived by the owner on May 1, 2020. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 3 additions & 24 deletions drivers/gpu/msm/kgsl.c
Original file line number Diff line number Diff line change
Expand Up @@ -2778,20 +2778,6 @@ static int kgsl_setup_phys_file(struct kgsl_mem_entry *entry,
}
#endif

static int check_vma_flags(struct vm_area_struct *vma,
unsigned int flags)
{
unsigned long flags_requested = (VM_READ | VM_WRITE);

if (flags & KGSL_MEMFLAGS_GPUREADONLY)
flags_requested &= ~VM_WRITE;

if ((vma->vm_flags & flags_requested) == flags_requested)
return 0;

return -EFAULT;
}

static int check_vma(struct vm_area_struct *vma, struct file *vmfile,
struct kgsl_memdesc *memdesc)
{
Expand All @@ -2805,7 +2791,7 @@ static int check_vma(struct vm_area_struct *vma, struct file *vmfile,
if (vma->vm_start != memdesc->useraddr ||
(memdesc->useraddr + memdesc->size) != vma->vm_end)
return -EINVAL;
return check_vma_flags(vma, memdesc->flags);
return 0;
}

static int memdesc_sg_virt(struct kgsl_memdesc *memdesc, struct file *vmfile)
Expand All @@ -2814,7 +2800,7 @@ static int memdesc_sg_virt(struct kgsl_memdesc *memdesc, struct file *vmfile)
long npages = 0, i;
unsigned long sglen = memdesc->size / PAGE_SIZE;
struct page **pages = NULL;
int write = ((memdesc->flags & KGSL_MEMFLAGS_GPUREADONLY) ? 0 : 1);
int write = (memdesc->flags & KGSL_MEMFLAGS_GPUREADONLY) != 0;

if (sglen == 0 || sglen >= LONG_MAX)
return -EINVAL;
Expand Down Expand Up @@ -2900,7 +2886,6 @@ static int kgsl_setup_useraddr(struct kgsl_mem_entry *entry,
struct kgsl_map_user_mem *param = data;
struct dma_buf *dmabuf = NULL;
struct vm_area_struct *vma = NULL;
int ret;

if (param->len == 0 || param->offset != 0
|| param->hostptr == 0
Expand All @@ -2918,12 +2903,6 @@ static int kgsl_setup_useraddr(struct kgsl_mem_entry *entry,
if (vma && vma->vm_file) {
int fd;

ret = check_vma_flags(vma, entry->memdesc.flags);
if (ret) {
up_read(&current->mm->mmap_sem);
return ret;
}

/*
* Check to see that this isn't our own memory that we have
* already mapped
Expand All @@ -2942,7 +2921,7 @@ static int kgsl_setup_useraddr(struct kgsl_mem_entry *entry,
up_read(&current->mm->mmap_sem);

if (!IS_ERR_OR_NULL(dmabuf)) {
ret = kgsl_setup_dma_buf(entry, pagetable, device, dmabuf);
int ret = kgsl_setup_dma_buf(entry, pagetable, device, dmabuf);
if (ret)
dma_buf_put(dmabuf);
else {
Expand Down