summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAjay Singh Parmar <aparmar@codeaurora.org>2017-01-26 19:17:52 -0800
committerAjay Singh Parmar <aparmar@codeaurora.org>2017-01-31 11:58:42 -0800
commit55e88a7c6751ea502b38ca91e3def95ed6910234 (patch)
treef8bd440298c52bc268ba7fce7425a9a5fa18e991
parent42e1251b38729f7d0ec276e8a195db1d3ed22d41 (diff)
msm: mdss: dp: fix hdcp data address
Provide correct hdcp related data from a given device to avoid invalid address access related issues. CRs-Fixed: 1114981 Change-Id: I8af0e80fa883f21e989a12a84e8e656d0dcb72d4 Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp.c b/drivers/video/fbdev/msm/mdss_dp.c
index f3c36c5c6b5a..93b436eab5ab 100644
--- a/drivers/video/fbdev/msm/mdss_dp.c
+++ b/drivers/video/fbdev/msm/mdss_dp.c
@@ -3759,18 +3759,33 @@ probe_err:
void *mdss_dp_get_hdcp_data(struct device *dev)
{
- struct mdss_dp_drv_pdata *dp_drv = NULL;
+ struct mdss_dp_drv_pdata *dp;
+ struct msm_fb_data_type *mfd;
+ struct mdss_panel_data *pd;
+ struct fb_info *fbi = dev_get_drvdata(dev);
- if (!dev) {
- pr_err("%s:Invalid input\n", __func__);
- return NULL;
+ if (!fbi) {
+ pr_err("invalid fbi\n");
+ goto error;
}
- dp_drv = dev_get_drvdata(dev);
- if (!dp_drv) {
- pr_err("%s:Invalid dp driver\n", __func__);
- return NULL;
+
+ mfd = (struct msm_fb_data_type *)fbi->par;
+ if (!mfd) {
+ pr_err("invalid mfd\n");
+ goto error;
+ }
+
+ pd = dev_get_platdata(&mfd->pdev->dev);
+ if (!pd) {
+ pr_err("invalid panel_data\n");
+ goto error;
}
- return dp_drv->hdcp.data;
+
+ dp = container_of(pd, struct mdss_dp_drv_pdata, panel_data);
+
+ return dp->hdcp.data;
+error:
+ return NULL;
}
static inline bool dp_is_stream_shareable(struct mdss_dp_drv_pdata *dp_drv)