diff options
| author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-12-05 10:39:49 +0000 | 
|---|---|---|
| committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-12-05 10:43:13 +0000 | 
| commit | 5c5332bbc38ff25c06081ac53a15ad583ad4cbc4 (patch) | |
| tree | c89a6bf442fc63f076186372be73bb4b1473d967 | |
| parent | e73161a02b604742e3da3bca8f13cff81276de43 (diff) | |
intel: Clean up mmaps on freeing the buffer
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>
| -rw-r--r-- | intel/intel_bufmgr_gem.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c index d8623295..db1416a6 100644 --- a/intel/intel_bufmgr_gem.c +++ b/intel/intel_bufmgr_gem.c @@ -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);  | 
