diff options
| author | Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org> | 2013-06-11 16:14:37 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:18:15 -0700 |
| commit | 85657b04d66d0486fb4f6cf3d65cb151bc6fa48e (patch) | |
| tree | f2ab7bd94e388ade16be4a133fe8c63a5e7d67ea | |
| parent | ca9cf379d47b721e9a1cc83422b1470f7406bae6 (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.c | 18 |
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; } } |
