aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-10-29 05:41:23 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-10-29 05:54:29 -0400
commit7465378fd7c681f6cf2b74b3494c4f0991d8c8ac (patch)
treefb6266fb46cf3407792b361add7df31cb13588b5
parentbbe2e11a4b683ead070ad5823cdf756e1525b903 (diff)
drm/i915: Convert BUG_ON(pin_count) from an impossible condition
Also spotted by Dan Carpenter. obj->pin_count is unsigned so the BUG_ON(obj->pin_count<0) will never trigger. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 7569b77fb403..08f57aedaf51 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4128,12 +4128,7 @@ i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment,
4128 return ret; 4128 return ret;
4129 } 4129 }
4130 4130
4131 obj_priv->pin_count++; 4131 if (obj_priv->pin_count++ == 0) {
4132
4133 /* If the object is not active and not pending a flush,
4134 * remove it from the inactive list
4135 */
4136 if (obj_priv->pin_count == 1) {
4137 i915_gem_info_add_pin(dev_priv, obj, mappable); 4132 i915_gem_info_add_pin(dev_priv, obj, mappable);
4138 if (!obj_priv->active) 4133 if (!obj_priv->active)
4139 list_move_tail(&obj_priv->mm_list, 4134 list_move_tail(&obj_priv->mm_list,
@@ -4153,15 +4148,10 @@ i915_gem_object_unpin(struct drm_gem_object *obj)
4153 struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); 4148 struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);
4154 4149
4155 WARN_ON(i915_verify_lists(dev)); 4150 WARN_ON(i915_verify_lists(dev));
4156 obj_priv->pin_count--; 4151 BUG_ON(obj_priv->pin_count == 0);
4157 BUG_ON(obj_priv->pin_count < 0);
4158 BUG_ON(obj_priv->gtt_space == NULL); 4152 BUG_ON(obj_priv->gtt_space == NULL);
4159 4153
4160 /* If the object is no longer pinned, and is 4154 if (--obj_priv->pin_count == 0) {
4161 * neither active nor being flushed, then stick it on
4162 * the inactive list
4163 */
4164 if (obj_priv->pin_count == 0) {
4165 if (!obj_priv->active) 4155 if (!obj_priv->active)
4166 list_move_tail(&obj_priv->mm_list, 4156 list_move_tail(&obj_priv->mm_list,
4167 &dev_priv->mm.inactive_list); 4157 &dev_priv->mm.inactive_list);