Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36b503f8 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: handle race condition between ov_off and ov_commit"

parents acba3f8f e815a545
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3192,6 +3192,8 @@ static int mdss_mdp_overlay_off(struct msm_fb_data_type *mfd)
		mdss_mdp_ctl_restore(mdp5_data->ctl);
	}

	mutex_lock(&mdp5_data->ov_lock);

	mdss_mdp_overlay_free_fb_pipe(mfd);

	mixer = mdss_mdp_mixer_get(mdp5_data->ctl, MDSS_MDP_MIXER_MUX_LEFT);
@@ -3205,12 +3207,14 @@ static int mdss_mdp_overlay_off(struct msm_fb_data_type *mfd)
	mutex_lock(&mdp5_data->list_lock);
	need_cleanup = !list_empty(&mdp5_data->pipes_cleanup);
	mutex_unlock(&mdp5_data->list_lock);
	mutex_unlock(&mdp5_data->ov_lock);

	if (need_cleanup) {
		pr_debug("cleaning up pipes on fb%d\n", mfd->index);
		mdss_mdp_overlay_kickoff(mfd, NULL);
	}

	mutex_lock(&mdp5_data->ov_lock);
	rc = mdss_mdp_ctl_stop(mdp5_data->ctl);
	if (rc == 0) {
		mutex_lock(&mdp5_data->list_lock);
@@ -3232,6 +3236,7 @@ static int mdss_mdp_overlay_off(struct msm_fb_data_type *mfd)
		if (rc)
			pr_err("unable to suspend w/pm_runtime_put (%d)\n", rc);
	}
	mutex_unlock(&mdp5_data->ov_lock);

	return rc;
}