aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-01-30 16:10:22 -0500
committerDave Airlie <airlied@linux.ie>2009-02-08 06:38:08 -0500
commit72daad40dc0be179e0dc85c17d5dc1e850b5e8e4 (patch)
tree032d006d8c85aeb2dcf75a23f0ed592fed59c4a4 /drivers
parent0f973f27888e4664b253ab2cf69c67c2eb80ab1b (diff)
drm/i915: Unref the object after failing to set tiling mode.
Cleanup the object reference on the error paths. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Eric Anholt <eric@anholt.net> Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_tiling.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
index 2534c792808e..fa1685cba840 100644
--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
@@ -258,8 +258,10 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
258 return -EINVAL; 258 return -EINVAL;
259 obj_priv = obj->driver_private; 259 obj_priv = obj->driver_private;
260 260
261 if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) 261 if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) {
262 drm_gem_object_unreference(obj);
262 return -EINVAL; 263 return -EINVAL;
264 }
263 265
264 mutex_lock(&dev->struct_mutex); 266 mutex_lock(&dev->struct_mutex);
265 267
@@ -289,6 +291,7 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
289 "failed to unbind object for tiling switch"); 291 "failed to unbind object for tiling switch");
290 args->tiling_mode = obj_priv->tiling_mode; 292 args->tiling_mode = obj_priv->tiling_mode;
291 mutex_unlock(&dev->struct_mutex); 293 mutex_unlock(&dev->struct_mutex);
294 drm_gem_object_unreference(obj);
292 295
293 return ret; 296 return ret;
294 } 297 }