commit: 092de6f225638ec300936bfcbdc67805733cc78c From: Chris Wilson <[email protected]> Date: Mon, 10 Jan 2011 14:21:05 +0000 Subject: [PATCH] drm/i915/evict: Ensure we completely cleanup on failure
.. and not leave the objects in a inconsistent state. Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected] --- drivers/gpu/drm/i915/i915_gem_evict.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c index 78b8cf9..3d39005 100644 --- a/drivers/gpu/drm/i915/i915_gem_evict.c +++ b/drivers/gpu/drm/i915/i915_gem_evict.c @@ -127,9 +127,15 @@ i915_gem_evict_something(struct drm_device *dev, int min_size, } /* Nothing found, clean up and bail out! */ - list_for_each_entry(obj, &unwind_list, exec_list) { + while (!list_empty(&unwind_list)) { + obj = list_first_entry(&unwind_list, + struct drm_i915_gem_object, + exec_list); + ret = drm_mm_scan_remove_block(obj->gtt_space); BUG_ON(ret); + + list_del_init(&obj->exec_list); drm_gem_object_unreference(&obj->base); } @@ -162,6 +168,7 @@ found: exec_list); if (ret == 0) ret = i915_gem_object_unbind(obj); + list_del_init(&obj->exec_list); drm_gem_object_unreference(&obj->base); } _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
