[PATCH] drm: omapdrm: displays: panel-dsi-cm: Fix field access before set

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Mar 1 20:02:30 UTC 2018


The driver accesses the ddata->in field before it gets set in the
dsicm_connect() function. Use the local in pointer variable instead.

Fixes: 7877632b4cd0 ("drm: omapdrm: displays: Get panel source at connect time")
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Tomi,

This patch fixes a bug in a commit from your omapdrm-next branch that
hasn't been merged upstream yet. I'll let you decide whether you want to
squash it with the offending commit (and thus rebase) or apply it on
top. Sorry for screwing up :-/

diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
index f960e55d64ea..428de90fced1 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
@@ -778,13 +778,13 @@ static int dsicm_connect(struct omap_dss_device *dssdev)
 		goto err_connect;
 	}
 
-	r = in->ops.dsi->request_vc(ddata->in, &ddata->channel);
+	r = in->ops.dsi->request_vc(in, &ddata->channel);
 	if (r) {
 		dev_err(dev, "failed to get virtual channel\n");
 		goto err_req_vc;
 	}
 
-	r = in->ops.dsi->set_vc_id(ddata->in, ddata->channel, TCH);
+	r = in->ops.dsi->set_vc_id(in, ddata->channel, TCH);
 	if (r) {
 		dev_err(dev, "failed to set VC_ID\n");
 		goto err_vc_id;
@@ -794,7 +794,7 @@ static int dsicm_connect(struct omap_dss_device *dssdev)
 	return 0;
 
 err_vc_id:
-	in->ops.dsi->release_vc(ddata->in, ddata->channel);
+	in->ops.dsi->release_vc(in, ddata->channel);
 err_req_vc:
 	in->ops.dsi->disconnect(in, dssdev);
 err_connect:
-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list