From bf8f46d4c64eb5b66814223f7e5ddb8d8e7a555e Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Thu, 8 Feb 2007 18:59:02 +0100 Subject: Fix mm_block leak. Some other minor fixes. --- linux-core/drmP.h | 4 +--- linux-core/drm_bo_move.c | 5 +++++ linux-core/drm_vm.c | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'linux-core') 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; -- cgit v1.2.3