Browse Source

drm/msm/mdp5: fix ref leaks in error paths

Signed-off-by: Rob Clark <robdclark@gmail.com>
Rob Clark 11 years ago
parent
commit
37033a7689
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c

+ 6 - 1
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c

@@ -296,6 +296,7 @@ static int mdp5_crtc_mode_set(struct drm_crtc *crtc,
 			x << 16, y << 16,
 			mode->hdisplay << 16, mode->vdisplay << 16);
 	if (ret) {
+		drm_framebuffer_unreference(crtc->fb);
 		dev_err(crtc->dev->dev, "%s: failed to set mode on plane: %d\n",
 				mdp5_crtc->name, ret);
 		return ret;
@@ -343,11 +344,15 @@ static int mdp5_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
 			0, 0, mode->hdisplay, mode->vdisplay,
 			x << 16, y << 16,
 			mode->hdisplay << 16, mode->vdisplay << 16);
+	if (ret) {
+		drm_framebuffer_unreference(crtc->fb);
+		return ret;
+	}
 
 	update_fb(crtc, crtc->fb);
 	update_scanout(crtc, crtc->fb);
 
-	return ret;
+	return 0;
 }
 
 static void mdp5_crtc_load_lut(struct drm_crtc *crtc)