From f1f813d214cf9c0eff696a285a0f35b9846ca20c Mon Sep 17 00:00:00 2001 From: Benjamin Chan Date: Wed, 14 Sep 2016 18:22:00 -0400 Subject: [PATCH] msm: mdss: Correct error handling in MDSS driver Fix variable initialization and NULL pointer referencing under error condition handling in the MDSS driver. CRs-Fixed: 1067141 Change-Id: Idd971601d5358104831784d645d84b1f9d2b631c Signed-off-by: Benjamin Chan --- drivers/video/fbdev/msm/mdss_mdp.c | 15 +++++++++------ drivers/video/fbdev/msm/mdss_mdp_wfd.c | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index 1b5c1b7d51e1..82e57d283bf9 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -3382,14 +3382,17 @@ static int mdss_mdp_parse_dt_pipe(struct platform_device *pdev) mdata->has_panic_ctrl = of_property_read_bool(pdev->dev.of_node, "qcom,mdss-has-panic-ctrl"); if (mdata->has_panic_ctrl) { - mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, - "qcom,mdss-pipe-vig-panic-ctrl-offsets", + if (mdata->vig_pipes) + mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, + "qcom,mdss-pipe-vig-panic-ctrl-offsets", mdata->vig_pipes, mdata->nvig_pipes); - mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, - "qcom,mdss-pipe-rgb-panic-ctrl-offsets", + if (mdata->rgb_pipes) + mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, + "qcom,mdss-pipe-rgb-panic-ctrl-offsets", mdata->rgb_pipes, mdata->nrgb_pipes); - mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, - "qcom,mdss-pipe-dma-panic-ctrl-offsets", + if (mdata->dma_pipes) + mdss_mdp_parse_dt_pipe_panic_ctrl(pdev, + "qcom,mdss-pipe-dma-panic-ctrl-offsets", mdata->dma_pipes, mdata->ndma_pipes); } diff --git a/drivers/video/fbdev/msm/mdss_mdp_wfd.c b/drivers/video/fbdev/msm/mdss_mdp_wfd.c index 656967831810..f04450e9974c 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_wfd.c +++ b/drivers/video/fbdev/msm/mdss_mdp_wfd.c @@ -430,7 +430,7 @@ int mdss_mdp_cwb_validate(struct msm_fb_data_type *mfd, return rc; fmt = mdss_mdp_get_format_params(layer->buffer.format); - if (!(fmt->flag & VALID_MDP_WB_INTF_FORMAT)) { + if (!fmt || (fmt && !(fmt->flag & VALID_MDP_WB_INTF_FORMAT))) { pr_err("wb does not support dst fmt:%d\n", layer->buffer.format); return -EINVAL;