drm/i915: Propagate error from unbinding an unfenceable object.
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 27 May 2010 12:18:15 +0000 (13:18 +0100)
committerEric Anholt <eric@anholt.net>
Fri, 28 May 2010 17:42:52 +0000 (10:42 -0700)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/i915_gem.c

index 1c65f0b591fc1fe80bd37de8aad0cc9fe4b84c0a..6425c2a4b11fdbd94d5fc8c49004071ab1bbbcd4 100644 (file)
@@ -3307,9 +3307,13 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
                     obj_priv->tiling_mode != I915_TILING_NONE;
 
        /* Check fence reg constraints and rebind if necessary */
-       if (need_fence && !i915_gem_object_fence_offset_ok(obj,
-           obj_priv->tiling_mode))
-               i915_gem_object_unbind(obj);
+       if (need_fence &&
+           !i915_gem_object_fence_offset_ok(obj,
+                                            obj_priv->tiling_mode)) {
+               ret = i915_gem_object_unbind(obj);
+               if (ret)
+                       return ret;
+       }
 
        /* Choose the GTT offset for our buffer and put it there. */
        ret = i915_gem_object_pin(obj, (uint32_t) entry->alignment);