aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-02-11 09:26:44 -0500
committerEric Anholt <eric@anholt.net>2009-03-10 23:22:24 -0400
commit9b2412f9ad0a3913baa40c270d6e1fa3c6d50067 (patch)
tree88f0382840856fc1d58aa12bcbfb2d1ec8eb7ae0 /drivers/gpu/drm/i915/i915_gem.c
parent040aefa263aa9cd7bd5df50586c35e1e15e77f84 (diff)
drm/i915: First recheck for an empty fence register.
If we wait upon a request and successfully unbind a buffer occupying a fence register, then that slot will be freed and cause a NULL derefrence upon rescanning. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index c94069b28a47..6497c1ad02d3 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1580,6 +1580,7 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj, bool write)
1580 } 1580 }
1581 1581
1582 /* First try to find a free reg */ 1582 /* First try to find a free reg */
1583try_again:
1583 for (i = dev_priv->fence_reg_start; i < dev_priv->num_fence_regs; i++) { 1584 for (i = dev_priv->fence_reg_start; i < dev_priv->num_fence_regs; i++) {
1584 reg = &dev_priv->fence_regs[i]; 1585 reg = &dev_priv->fence_regs[i];
1585 if (!reg->obj) 1586 if (!reg->obj)
@@ -1591,7 +1592,6 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj, bool write)
1591 struct drm_i915_gem_object *old_obj_priv = NULL; 1592 struct drm_i915_gem_object *old_obj_priv = NULL;
1592 loff_t offset; 1593 loff_t offset;
1593 1594
1594try_again:
1595 /* Could try to use LRU here instead... */ 1595 /* Could try to use LRU here instead... */
1596 for (i = dev_priv->fence_reg_start; 1596 for (i = dev_priv->fence_reg_start;
1597 i < dev_priv->num_fence_regs; i++) { 1597 i < dev_priv->num_fence_regs; i++) {