diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index 29f6162c34ec89df8dcf9c03a560ba4a9e318de8..a138719bd09458ebdeee079dae876c95b445c7f9 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -592,13 +592,18 @@ _kgsl_sharedmem_page_alloc(struct kgsl_memdesc *memdesc, size_t size) { int pcount = 0, order, ret = 0; - int j, len, page_size, sglen_alloc, sglen = 0; + int j, page_size, sglen_alloc, sglen = 0; struct page **pages = NULL; pgprot_t page_prot = pgprot_writecombine(PAGE_KERNEL); void *ptr; + size_t len; unsigned int align; int step = SZ_2M >> PAGE_SHIFT; + size = PAGE_ALIGN(size); + if (size == 0 || size > UINT_MAX) + return -EINVAL; + align = (memdesc->flags & KGSL_MEMALIGN_MASK) >> KGSL_MEMALIGN_SHIFT; page_size = (align >= ilog2(SZ_64K) && size >= SZ_64K)