drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer

Changelog v2:

Removed redundant check for invalid sgl.
Added check for valid page_offset in the beginning of exynos_drm_gem_map_buf.

Changelog v1:

The 'pages' structure is not required since we can use the 'sgt'. Even for
CONTIG buffers, a SGT is created (which will have just one sgl). This SGT
can be used during mmap instead of 'pages'. The 'page_size' element of the
structure is also not used anywhere and is removed.
This patch also fixes a memory leak where the 'pages' structure was being
allocated during gem buffer allocation but not being freed during deallocate.

Signed-off-by: Prathyush K <prathyush.k@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 52187ae..9922724 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -99,34 +99,23 @@
 	unsigned long pfn;
 	int i;
 
-	if (exynos_gem_obj->flags & EXYNOS_BO_NONCONTIG) {
-		if (!buf->sgt)
-			return -EINTR;
+	if (!buf->sgt)
+		return -EINTR;
 
-		sgl = buf->sgt->sgl;
-		for_each_sg(buf->sgt->sgl, sgl, buf->sgt->nents, i) {
-			if (!sgl) {
-				DRM_ERROR("invalid SG table\n");
-				return -EINTR;
-			}
-			if (page_offset < (sgl->length >> PAGE_SHIFT))
-				break;
-			page_offset -=	(sgl->length >> PAGE_SHIFT);
-		}
-
-		if (i >= buf->sgt->nents) {
-			DRM_ERROR("invalid page offset\n");
-			return -EINVAL;
-		}
-
-		pfn = __phys_to_pfn(sg_phys(sgl)) + page_offset;
-	} else {
-		if (!buf->pages)
-			return -EINTR;
-
-		pfn = page_to_pfn(buf->pages[0]) + page_offset;
+	if (page_offset >= (buf->size >> PAGE_SHIFT)) {
+		DRM_ERROR("invalid page offset\n");
+		return -EINVAL;
 	}
 
+	sgl = buf->sgt->sgl;
+	for_each_sg(buf->sgt->sgl, sgl, buf->sgt->nents, i) {
+		if (page_offset < (sgl->length >> PAGE_SHIFT))
+			break;
+		page_offset -=	(sgl->length >> PAGE_SHIFT);
+	}
+
+	pfn = __phys_to_pfn(sg_phys(sgl)) + page_offset;
+
 	return vm_insert_mixed(vma, f_vaddr, pfn);
 }