OSDN Git Service

Fix mm_block leak.
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Thu, 8 Feb 2007 17:59:02 +0000 (18:59 +0100)
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Thu, 8 Feb 2007 17:59:02 +0000 (18:59 +0100)
Some other minor fixes.

linux-core/drmP.h
linux-core/drm_bo_move.c
linux-core/drm_vm.c

index 7b8f2c6..5503521 100644 (file)
@@ -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"
 
index b7a4929..4ed3392 100644 (file)
@@ -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;
index 25779ec..5afa980 100644 (file)
@@ -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;