diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index 92285f4550ed..cd4fc1f00d48 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -3792,10 +3792,9 @@ static int mdss_fb_get_metadata(struct msm_fb_data_type *mfd, struct msmfb_metadata *metadata) { struct mdss_data_type *mdata = mfd_to_mdata(mfd); - struct mdss_mdp_ctl *ctl = mfd_to_ctl(mfd); + struct mdss_mdp_ctl *ctl = NULL; int ret = 0; - if (!ctl) - return -EPERM; + switch (metadata->op) { case metadata_op_frame_rate: metadata->data.panel_frame_rate = @@ -3814,7 +3813,8 @@ static int mdss_fb_get_metadata(struct msm_fb_data_type *mfd, } break; case metadata_op_crc: - if (mdss_fb_is_power_off(mfd)) + ctl = mfd_to_ctl(mfd); + if (!ctl || mdss_fb_is_power_off(mfd)) return -EPERM; ret = mdss_misr_get(mdata, &metadata->data.misr_request, ctl); break;