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

Commit df74e7e3 authored by Padmanabhan Komanduru's avatar Padmanabhan Komanduru
Browse files

msm: mdss: check for validity of ESD thread before scheduling it



Before scheduling the ESD thread during fb_event_callback and
updating the relevant data structures, check if ESD is valid
for that particular frame buffer. This avoids issues during
WFD connect use cases, where the dsi_status_data's mfd structure
gets corrupted with FB1 and leads to target crash during the next
ESD check due to invalid pointer dereferences.

Change-Id: Ia50a0b3c1ee74c4f574da6960a1b6d1707c3a89f
Signed-off-by: default avatarPadmanabhan Komanduru <pkomandu@codeaurora.org>
parent 648cfa62
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -82,14 +82,15 @@ static int fb_event_callback(struct notifier_block *self,
				struct dsi_status_data, fb_notifier);
	struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
	struct mdss_panel_info *pinfo;
	struct msm_fb_data_type *mfd;

	if (!evdata) {
		pr_err("%s: event data not available\n", __func__);
		return NOTIFY_BAD;
	}

	pdata->mfd = evdata->info->par;
	ctrl_pdata = container_of(dev_get_platdata(&pdata->mfd->pdev->dev),
	mfd = evdata->info->par;
	ctrl_pdata = container_of(dev_get_platdata(&mfd->pdev->dev),
				struct mdss_dsi_ctrl_pdata, panel_data);
	if (!ctrl_pdata) {
		pr_err("%s: DSI ctrl not available\n", __func__);
@@ -108,6 +109,7 @@ static int fb_event_callback(struct notifier_block *self,
		return NOTIFY_DONE;
	}

	pdata->mfd = evdata->info->par;
	if (event == FB_EVENT_BLANK) {
		int *blank = evdata->data;
		struct dsi_status_data *pdata = container_of(self,