diff options
| -rw-r--r-- | drivers/gpu/msm/kgsl.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c index 9d197884e97..da3dab36c2c 100644 --- a/drivers/gpu/msm/kgsl.c +++ b/drivers/gpu/msm/kgsl.c @@ -2686,12 +2686,15 @@ static int check_vma(struct vm_area_struct *vma, struct file *vmfile, static int memdesc_sg_virt(struct kgsl_memdesc *memdesc, struct file *vmfile) { - int i, ret = 0; - long npages = 0; + int ret = 0; + long npages = 0, i; unsigned long sglen = memdesc->size / PAGE_SIZE; struct page **pages = NULL; int write = (memdesc->flags & KGSL_MEMFLAGS_GPUREADONLY) != 0; + if (sglen == 0 || sglen >= LONG_MAX) + return -EINVAL; + pages = kgsl_malloc(sglen * sizeof(struct page *)); if (pages == NULL) return -ENOMEM; |
