summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-11-28 15:31:02 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2010-11-28 15:31:02 +0000
commit602606a472963a67b234e6b5c99293de4aa9d06b (patch)
tree6af83a1782ea0c9ff3b83fe15902c9cf0c96e8c6
parent432e58edc9de1d9c3d6a7b444b3c455b8f209a7d (diff)
downloadop-kernel-dev-602606a472963a67b234e6b5c99293de4aa9d06b.zip
op-kernel-dev-602606a472963a67b234e6b5c99293de4aa9d06b.tar.gz
drm/i915/execbuffer: On error, starting unwinding from the previous object
As the error occurred on the current object, it means that its state was not changed and so it should be excluded from the unwind. Reported-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index d540701..66c898c 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -530,6 +530,9 @@ i915_gem_execbuffer_reserve(struct drm_device *dev,
} while (1);
err:
+ obj = list_entry(obj->exec_list.prev,
+ struct drm_i915_gem_object,
+ exec_list);
while (objects != &obj->exec_list) {
if (obj->gtt_space)
i915_gem_object_unpin(obj);
OpenPOWER on IntegriCloud