From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Vinod Polimera <quic_vpolimer@quicinc.com>,
dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, robdclark@gmail.com,
dianders@chromium.org, vpolimer@quicinc.com, swboyd@chromium.org,
kalyant@quicinc.com
Subject: Re: [v2] drm/msm: add null checks for drm device to avoid crash during probe defer
Date: Fri, 26 Aug 2022 11:41:29 +0300 [thread overview]
Message-ID: <f70f9f1b-c835-7baf-974d-87f2bf6e4e53@linaro.org> (raw)
In-Reply-To: <29ae886c-b2b2-2387-87cb-e4a885080418@linaro.org>
On 15/06/2022 15:23, Dmitry Baryshkov wrote:
> On 03/06/2022 12:42, Vinod Polimera wrote:
>> During probe defer, drm device is not initialized and an external
>> trigger to shutdown is trying to clean up drm device leading to crash.
>> Add checks to avoid drm device cleanup in such cases.
>>
>> BUG: unable to handle kernel NULL pointer dereference at virtual
>> address 00000000000000b8
>>
>> Call trace:
>>
>> drm_atomic_helper_shutdown+0x44/0x144
>> msm_pdev_shutdown+0x2c/0x38
>> platform_shutdown+0x2c/0x38
>> device_shutdown+0x158/0x210
>> kernel_restart_prepare+0x40/0x4c
>> kernel_restart+0x20/0x6c
>> __arm64_sys_reboot+0x194/0x23c
>> invoke_syscall+0x50/0x13c
>> el0_svc_common+0xa0/0x17c
>> do_el0_svc_compat+0x28/0x34
>> el0_svc_compat+0x20/0x70
>> el0t_32_sync_handler+0xa8/0xcc
>> el0t_32_sync+0x1a8/0x1ac
>>
>> Changes in v2:
>> - Add fixes tag.
>>
>> Fixes: 623f279c778 ("drm/msm: fix shutdown hook in case GPU components
>> failed to bind")
>> Signed-off-by: Vinod Polimera <quic_vpolimer@quicinc.com>
>> ---
>> drivers/gpu/drm/msm/msm_drv.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/msm/msm_drv.c
>> b/drivers/gpu/drm/msm/msm_drv.c
>> index 4448536..d62ac66 100644
>> --- a/drivers/gpu/drm/msm/msm_drv.c
>> +++ b/drivers/gpu/drm/msm/msm_drv.c
>> @@ -142,6 +142,9 @@ static void msm_irq_uninstall(struct drm_device *dev)
>> struct msm_drm_private *priv = dev->dev_private;
>> struct msm_kms *kms = priv->kms;
>> + if (!irq_has_action(kms->irq))
>> + return;
>
> As a second thought I'd still prefer a variable here. irq_has_action
> would check that there is _any_ IRQ handler for this IRQ. While we do
> not have anybody sharing this IRQ, I'd prefer to be clear here, that we
> do not want to uninstall our IRQ handler rather than any IRQ handler.
Vinod, do we still want to pursue this fix? If so, could you please
update it according to the comment.
>
>> +
>> kms->funcs->irq_uninstall(kms);
>> if (kms->irq_requested)
>> free_irq(kms->irq, dev);
>> @@ -259,6 +262,7 @@ static int msm_drm_uninit(struct device *dev)
>> ddev->dev_private = NULL;
>> drm_dev_put(ddev);
>> + priv->dev = NULL;
>> destroy_workqueue(priv->wq);
>> @@ -1167,7 +1171,7 @@ void msm_drv_shutdown(struct platform_device *pdev)
>> struct msm_drm_private *priv = platform_get_drvdata(pdev);
>> struct drm_device *drm = priv ? priv->dev : NULL;
>> - if (!priv || !priv->kms)
>> + if (!priv || !priv->kms || !drm)
>> return;
>> drm_atomic_helper_shutdown(drm);
>
>
--
With best wishes
Dmitry
next prev parent reply other threads:[~2022-08-26 8:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-03 9:42 [v2] drm/msm: add null checks for drm device to avoid crash during probe defer Vinod Polimera
2022-06-03 9:44 ` Dmitry Baryshkov
2022-06-03 9:46 ` Dmitry Baryshkov
2022-06-15 12:20 ` Dmitry Baryshkov
2022-06-15 12:23 ` Dmitry Baryshkov
2022-08-26 8:41 ` Dmitry Baryshkov [this message]
2022-09-27 7:31 ` Vinod Polimera
2022-09-27 9:02 ` Javier Martinez Canillas
2022-09-27 9:41 ` Vinod Polimera
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f70f9f1b-c835-7baf-974d-87f2bf6e4e53@linaro.org \
--to=dmitry.baryshkov@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=kalyant@quicinc.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quic_vpolimer@quicinc.com \
--cc=robdclark@gmail.com \
--cc=swboyd@chromium.org \
--cc=vpolimer@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).