From 6a99a02ceb043ec80266046620273e2cbaf3aa95 Mon Sep 17 00:00:00 2001 From: Yuan Lin <yualin@google.com> Date: Tue, 19 Apr 2016 22:51:59 +0000 Subject: [PATCH] msm: kgsl: Add missing checks for alloc size and sglen This reverts commit 44c731034f3161db76698477f518fd404092bc3e. In _kgsl_sharedmem_page_alloc(): - Make len of type size_t to be in line with size. - Check for boundary limits of requested alloc size before honoring. - Make sure sglen is greater than zero before marking it as end of sg list. BUG=27475454 Change-Id: I9053000bf8ca17b4b5237863fe7d3f9a73e811ad --- drivers/gpu/msm/kgsl_sharedmem.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index 73c263bcf56a..4aec22b45033 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -580,10 +580,15 @@ _kgsl_sharedmem_page_alloc(struct kgsl_memdesc *memdesc, size_t size) { int order, ret = 0; - int len, sglen_alloc, sglen = 0; + int sglen_alloc, sglen = 0; + size_t len; void *ptr; unsigned int align; + size = PAGE_ALIGN(size); + if (size == 0 || size > UINT_MAX) + return -EINVAL; + align = (memdesc->flags & KGSL_MEMALIGN_MASK) >> KGSL_MEMALIGN_SHIFT; /* -- GitLab