From 675f868f23bd124b7c4d040573fece6a532b07f4 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 22 Aug 2009 17:26:32 +0100 Subject: Release mapping resources when deleting a GEM object Signed-off-by: Thomas White --- drivers/mfd/glamo/glamo-buffer.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'drivers') diff --git a/drivers/mfd/glamo/glamo-buffer.c b/drivers/mfd/glamo/glamo-buffer.c index 6529e5f51ac..ae8eeadb25a 100644 --- a/drivers/mfd/glamo/glamo-buffer.c +++ b/drivers/mfd/glamo/glamo-buffer.c @@ -299,12 +299,31 @@ int glamodrm_gem_init_object(struct drm_gem_object *obj) void glamodrm_gem_free_object(struct drm_gem_object *obj) { struct drm_glamo_gem_object *gobj; + struct drm_map_list *list; + struct drm_device *dev; + struct drm_gem_mm *mm; + struct drm_map *map; + dev = obj->dev; + mm = dev->mm_private; gobj = obj->driver_private; /* Free the VRAM */ drm_mm_put_block(gobj->block); + /* Release mappings */ + list = &obj->map_list; + drm_ht_remove_item(&mm->offset_hash, &list->hash); + if (list->file_offset_node) { + drm_mm_put_block(list->file_offset_node); + list->file_offset_node = NULL; + } + map = list->map; + if (map) { + drm_free(map, sizeof(*map), DRM_MEM_DRIVER); + list->map = NULL; + } + /* Free the private structure */ drm_free(obj->driver_private, 1, DRM_MEM_DRIVER); } -- cgit v1.2.3