intel: Clean up mmaps on freeing the buffer
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 5 Dec 2011 10:39:49 +0000 (10:39 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 5 Dec 2011 10:43:13 +0000 (10:43 +0000)
As a precautionary measure munmap on buffer free so that we never leak
the vma. Also include a warning during debugging.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
intel/intel_bufmgr_gem.c

index d862329..db1416a 100644 (file)
@@ -953,6 +953,20 @@ drm_intel_gem_bo_unreference_final(drm_intel_bo *bo, time_t time)
                bo_gem->relocs = NULL;
        }
 
+       /* Clear any left-over mappings */
+       if (bo_gem->map_count) {
+               DBG("bo freed with non-zero map-count %d\n", bo_gem->map_count);
+               bo_gem->map_count = 0;
+       }
+       if (bo_gem->mem_virtual) {
+               munmap(bo_gem->mem_virtual, bo_gem->bo.size);
+               bo_gem->mem_virtual = 0;
+       }
+       if (bo_gem->gtt_virtual) {
+               munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
+               bo_gem->gtt_virtual = 0;
+       }
+
        DRMLISTDEL(&bo_gem->name_list);
 
        bucket = drm_intel_gem_bo_bucket_for_size(bufmgr_gem, bo->size);