projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
36cf174
)
drm/i915/evict: Ensure we completely cleanup on failure
author
Chris Wilson
<chris@chris-wilson.co.uk>
Mon, 10 Jan 2011 14:21:05 +0000
(14:21 +0000)
committer
Chris Wilson
<chris@chris-wilson.co.uk>
Tue, 11 Jan 2011 22:55:39 +0000
(22:55 +0000)
... and not leave the objects in a inconsistent state.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
drivers/gpu/drm/i915/i915_gem_evict.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/i915/i915_gem_evict.c
b/drivers/gpu/drm/i915/i915_gem_evict.c
index 78b8cf90c922f7a8c9a588aff54d9d8561e020f2..3d39005540aad82a5b72df9b1efeeec1cb0b9813 100644
(file)
--- 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);
}