| From 5ad45307d990020b25a8f7486178b6e033790f70 Mon Sep 17 00:00:00 2001 |
| From: Matthias Brugger <matthias.bgg@gmail.com> |
| Date: Fri, 18 Nov 2016 11:06:10 +0100 |
| Subject: drm/mediatek: fix null pointer dereference |
| |
| From: Matthias Brugger <matthias.bgg@gmail.com> |
| |
| commit 5ad45307d990020b25a8f7486178b6e033790f70 upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| Change-Id: I57193a7ab554dfb37c35a455900689333adf511c |
| |
| --- |
| drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c |
| +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c |
| @@ -249,13 +249,6 @@ static int mtk_disp_ovl_probe(struct pla |
| if (irq < 0) |
| return irq; |
| |
| - ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler, |
| - IRQF_TRIGGER_NONE, dev_name(dev), priv); |
| - if (ret < 0) { |
| - dev_err(dev, "Failed to request irq %d: %d\n", irq, ret); |
| - return ret; |
| - } |
| - |
| comp_id = mtk_ddp_comp_get_id(dev->of_node, MTK_DISP_OVL); |
| if (comp_id < 0) { |
| dev_err(dev, "Failed to identify by alias: %d\n", comp_id); |
| @@ -271,6 +264,13 @@ static int mtk_disp_ovl_probe(struct pla |
| |
| platform_set_drvdata(pdev, priv); |
| |
| + ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler, |
| + IRQF_TRIGGER_NONE, dev_name(dev), priv); |
| + if (ret < 0) { |
| + dev_err(dev, "Failed to request irq %d: %d\n", irq, ret); |
| + return ret; |
| + } |
| + |
| ret = component_add(dev, &mtk_disp_ovl_component_ops); |
| if (ret) |
| dev_err(dev, "Failed to add component: %d\n", ret); |