From cc22cd8bde39f3e4be8ca9f726a773b0270ebdbc Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@optimus.localdomain>
Date: Tue, 19 Dec 2006 16:39:13 +1100
Subject: drm: ioremap balanced with iounmap for drivers/char/drm

ioremap must be balanced by an iounmap and failing to do so can result
in a memory leak.

Tested (compilation only) to make sure the files are compiling without
any warning/error due to new changes

Signed-off-by: Amol Lad <amol@verismonetworks.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
---
 linux-core/drm_bufs.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/linux-core/drm_bufs.c b/linux-core/drm_bufs.c
index d6ebc8d1..1ff7c90b 100644
--- a/linux-core/drm_bufs.c
+++ b/linux-core/drm_bufs.c
@@ -279,6 +279,8 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
 
 	list = drm_alloc(sizeof(*list), DRM_MEM_MAPS);
 	if (!list) {
+		if (map->type == _DRM_REGISTERS)
+			drm_ioremap(map->handle, map->size, dev);
 		drm_free(map, sizeof(*map), DRM_MEM_MAPS);
 		return -EINVAL;
 	}
@@ -295,6 +297,8 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
 	ret = drm_map_handle(dev, &list->hash, user_token, 0);
 
 	if (ret) {
+		if (map->type == _DRM_REGISTERS)
+			drm_ioremap(map->handle, map->size, dev);
 		drm_free(map, sizeof(*map), DRM_MEM_MAPS);
 		drm_free(list, sizeof(*list), DRM_MEM_MAPS);
 		mutex_unlock(&dev->struct_mutex);
-- 
cgit v1.2.3