aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Brugger <matthias.bgg@gmail.com>2016-11-18 05:06:10 -0500
committerCK Hu <ck.hu@mediatek.com>2016-11-24 01:53:15 -0500
commit5ad45307d990020b25a8f7486178b6e033790f70 (patch)
tree16f34af8e621e75a30967825705e0252f4946e8f
parentf6c872397028837c80685ee96c4011c62abe9a73 (diff)
drm/mediatek: fix null pointer dereference
The probe function requests the interrupt before initializing the ddp component. Which leads to a null pointer dereference at boot. Fix this by requesting the interrput after all components got initialized properly. Fixes: 119f5173628a ("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.") Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com> Change-Id: I57193a7ab554dfb37c35a455900689333adf511c
-rw-r--r--drivers/gpu/drm/mediatek/mtk_disp_ovl.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
index f75c5b5a536c..c70310206ac5 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
@@ -251,13 +251,6 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)
251 if (irq < 0) 251 if (irq < 0)
252 return irq; 252 return irq;
253 253
254 ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler,
255 IRQF_TRIGGER_NONE, dev_name(dev), priv);
256 if (ret < 0) {
257 dev_err(dev, "Failed to request irq %d: %d\n", irq, ret);
258 return ret;
259 }
260
261 comp_id = mtk_ddp_comp_get_id(dev->of_node, MTK_DISP_OVL); 254 comp_id = mtk_ddp_comp_get_id(dev->of_node, MTK_DISP_OVL);
262 if (comp_id < 0) { 255 if (comp_id < 0) {
263 dev_err(dev, "Failed to identify by alias: %d\n", comp_id); 256 dev_err(dev, "Failed to identify by alias: %d\n", comp_id);
@@ -273,6 +266,13 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)
273 266
274 platform_set_drvdata(pdev, priv); 267 platform_set_drvdata(pdev, priv);
275 268
269 ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler,
270 IRQF_TRIGGER_NONE, dev_name(dev), priv);
271 if (ret < 0) {
272 dev_err(dev, "Failed to request irq %d: %d\n", irq, ret);
273 return ret;
274 }
275
276 ret = component_add(dev, &mtk_disp_ovl_component_ops); 276 ret = component_add(dev, &mtk_disp_ovl_component_ops);
277 if (ret) 277 if (ret)
278 dev_err(dev, "Failed to add component: %d\n", ret); 278 dev_err(dev, "Failed to add component: %d\n", ret);