From: Thomas Hellstrom Date: Thu, 8 Feb 2007 17:59:02 +0000 (+0100) Subject: Fix mm_block leak. X-Git-Tag: android-x86-1.6~695^2~18 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=bf8f46d4c64eb5b66814223f7e5ddb8d8e7a555e;p=android-x86%2Fexternal-libdrm.git Fix mm_block leak. Some other minor fixes. --- diff --git a/linux-core/drmP.h b/linux-core/drmP.h index 7b8f2c66..55035210 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -608,9 +608,6 @@ typedef enum { } drm_object_type_t; - - - /* * A user object is a structure that helps the drm give out user handles * to kernel internal objects and to keep track of these objects so that @@ -647,6 +644,7 @@ typedef struct drm_ref_object { drm_ref_t unref_action; } drm_ref_object_t; +struct drm_buffer_object; #include "drm_ttm.h" diff --git a/linux-core/drm_bo_move.c b/linux-core/drm_bo_move.c index b7a49299..4ed3392d 100644 --- a/linux-core/drm_bo_move.c +++ b/linux-core/drm_bo_move.c @@ -243,6 +243,11 @@ int drm_bo_move_memcpy(drm_buffer_object_t *bo, } mb(); out2: + if (old_mem->mm_node) { + mutex_lock(&dev->struct_mutex); + drm_mm_put_block(old_mem->mm_node); + mutex_unlock(&dev->struct_mutex); + } *old_mem = *new_mem; new_mem->mm_node = NULL; old_mem->mask = save_mask; diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c index 25779eca..5afa9800 100644 --- a/linux-core/drm_vm.c +++ b/linux-core/drm_vm.c @@ -732,7 +732,6 @@ struct page *drm_bo_vm_fault(struct vm_area_struct *vma, { unsigned long address = data->address; drm_buffer_object_t *bo = (drm_buffer_object_t *) vma->vm_private_data; - drm_local_map_t *map; unsigned long page_offset; struct page *page = NULL; drm_ttm_t *ttm;