Browse Source

drm/i915: fix small leak on overlay error path

We should free "params" before returning.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Cc: stable@kernel.org (for .33)
Signed-off-by: Eric Anholt <eric@anholt.net>
Dan Carpenter 15 years ago
parent
commit
915a428e43
1 changed files with 9 additions and 4 deletions
  1. 9 4
      drivers/gpu/drm/i915/intel_overlay.c

+ 9 - 4
drivers/gpu/drm/i915/intel_overlay.c

@@ -1068,14 +1068,18 @@ int intel_overlay_put_image(struct drm_device *dev, void *data,
 
 
 	drmmode_obj = drm_mode_object_find(dev, put_image_rec->crtc_id,
 	drmmode_obj = drm_mode_object_find(dev, put_image_rec->crtc_id,
                         DRM_MODE_OBJECT_CRTC);
                         DRM_MODE_OBJECT_CRTC);
-	if (!drmmode_obj)
-		return -ENOENT;
+	if (!drmmode_obj) {
+		ret = -ENOENT;
+		goto out_free;
+	}
 	crtc = to_intel_crtc(obj_to_crtc(drmmode_obj));
 	crtc = to_intel_crtc(obj_to_crtc(drmmode_obj));
 
 
 	new_bo = drm_gem_object_lookup(dev, file_priv,
 	new_bo = drm_gem_object_lookup(dev, file_priv,
 			put_image_rec->bo_handle);
 			put_image_rec->bo_handle);
-	if (!new_bo)
-		return -ENOENT;
+	if (!new_bo) {
+		ret = -ENOENT;
+		goto out_free;
+	}
 
 
 	mutex_lock(&dev->mode_config.mutex);
 	mutex_lock(&dev->mode_config.mutex);
 	mutex_lock(&dev->struct_mutex);
 	mutex_lock(&dev->struct_mutex);
@@ -1165,6 +1169,7 @@ out_unlock:
 	mutex_unlock(&dev->struct_mutex);
 	mutex_unlock(&dev->struct_mutex);
 	mutex_unlock(&dev->mode_config.mutex);
 	mutex_unlock(&dev->mode_config.mutex);
 	drm_gem_object_unreference_unlocked(new_bo);
 	drm_gem_object_unreference_unlocked(new_bo);
+out_free:
 	kfree(params);
 	kfree(params);
 
 
 	return ret;
 	return ret;