Quellcode durchsuchen

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>
Chris Wilson vor 16 Jahren
Ursprung
Commit
72daad40dc
1 geänderte Dateien mit 4 neuen und 1 gelöschten Zeilen
  1. 4 1
      drivers/gpu/drm/i915/i915_gem_tiling.c

+ 4 - 1
drivers/gpu/drm/i915/i915_gem_tiling.c

@@ -258,8 +258,10 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
 		return -EINVAL;
 	obj_priv = obj->driver_private;
 
-	if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode))
+	if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) {
+		drm_gem_object_unreference(obj);
 		return -EINVAL;
+	}
 
 	mutex_lock(&dev->struct_mutex);
 
@@ -289,6 +291,7 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
 			     "failed to unbind object for tiling switch");
 			args->tiling_mode = obj_priv->tiling_mode;
 			mutex_unlock(&dev->struct_mutex);
+			drm_gem_object_unreference(obj);
 
 			return ret;
 		}