intel: Reset vma list upon purge
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 14 Dec 2011 08:20:10 +0000 (08:20 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 14 Dec 2011 08:23:02 +0000 (08:23 +0000)
During free we unconditionally delete the bo from the vma cache. This
relies on the its list member being kept in a sane state. This fails
after the object is purged, as the purge operation performs a pure
deletion and doesn't reset the list member, leaving a pair of dangling
pointers.

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

index 19441f3..eb9dd32 100644 (file)
@@ -958,7 +958,7 @@ static void drm_intel_gem_bo_purge_vma_cache(drm_intel_bufmgr_gem *bufmgr_gem)
                                      bufmgr_gem->vma_cache.next,
                                      vma_list);
                assert(bo_gem->map_count == 0);
-               DRMLISTDEL(&bo_gem->vma_list);
+               DRMLISTDELINIT(&bo_gem->vma_list);
 
                if (bo_gem->mem_virtual) {
                        munmap(bo_gem->mem_virtual, bo_gem->bo.size);