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