summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>2013-06-11 16:14:37 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:18:15 -0700
commit85657b04d66d0486fb4f6cf3d65cb151bc6fa48e (patch)
treef2ab7bd94e388ade16be4a133fe8c63a5e7d67ea
parentca9cf379d47b721e9a1cc83422b1470f7406bae6 (diff)
msm: mdss: Additional error handling in pipe_setup
copy from user failures in pipe setup should be handled gracefully before returning, mainly freeing resources allocated to the pipe. Change-Id: I53b9e72eb1a8139991fdef659e41937c9ec7a147 CRs-fixed: 492206 Signed-off-by: Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_overlay.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
index e2ae4cf3077f..43de734ca770 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
@@ -476,13 +476,17 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd,
ret = copy_from_user(pipe->pp_res.igc_c0_c1,
pipe->pp_cfg.igc_cfg.c0_c1_data,
sizeof(uint32_t) * len);
- if (ret)
- return -ENOMEM;
+ if (ret) {
+ ret = -ENOMEM;
+ goto exit_fail;
+ }
ret = copy_from_user(pipe->pp_res.igc_c2,
pipe->pp_cfg.igc_cfg.c2_data,
sizeof(uint32_t) * len);
- if (ret)
- return -ENOMEM;
+ if (ret) {
+ ret = -ENOMEM;
+ goto exit_fail;
+ }
pipe->pp_cfg.igc_cfg.c0_c1_data =
pipe->pp_res.igc_c0_c1;
pipe->pp_cfg.igc_cfg.c2_data = pipe->pp_res.igc_c2;
@@ -508,8 +512,10 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd,
ret = copy_from_user(pipe->pp_res.hist_lut,
pipe->pp_cfg.hist_lut_cfg.data,
sizeof(uint32_t) * len);
- if (ret)
- return -ENOMEM;
+ if (ret) {
+ ret = -ENOMEM;
+ goto exit_fail;
+ }
pipe->pp_cfg.hist_lut_cfg.data = pipe->pp_res.hist_lut;
}
}