On 30/04/2021 10:27, Neil Armstrong wrote: > When main component is not probed, by example when the dw-hdmi module is > not loaded yet or in probe defer, the following crash appears on shutdown: > > Unable to handle kernel NULL pointer dereference at virtual address 0000000000000038 > ... > pc : meson_drv_shutdown+0x24/0x50 > lr : platform_drv_shutdown+0x20/0x30 > ... > Call trace: > meson_drv_shutdown+0x24/0x50 > platform_drv_shutdown+0x20/0x30 > device_shutdown+0x158/0x360 > kernel_restart_prepare+0x38/0x48 > kernel_restart+0x18/0x68 > __do_sys_reboot+0x224/0x250 > __arm64_sys_reboot+0x24/0x30 > ... > > Simply check if the priv struct has been allocated before using it. > > Fixes: fa0c16caf3d7 ("drm: meson_drv add shutdown function") > Reported-by: Stefan Agner <stefan@xxxxxxxx> > Signed-off-by: Neil Armstrong <narmstrong@xxxxxxxxxxxx> > --- > drivers/gpu/drm/meson/meson_drv.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c > index 453d8b4c5763..07fcd12dca16 100644 > --- a/drivers/gpu/drm/meson/meson_drv.c > +++ b/drivers/gpu/drm/meson/meson_drv.c > @@ -485,11 +485,12 @@ static int meson_probe_remote(struct platform_device *pdev, > static void meson_drv_shutdown(struct platform_device *pdev) > { > struct meson_drm *priv = dev_get_drvdata(&pdev->dev); > - struct drm_device *drm = priv->drm; > > - DRM_DEBUG_DRIVER("\n"); > - drm_kms_helper_poll_fini(drm); > - drm_atomic_helper_shutdown(drm); > + if (!priv) > + return; > + > + drm_kms_helper_poll_fini(priv->drm); > + drm_atomic_helper_shutdown(priv->drm); > } > > static int meson_drv_probe(struct platform_device *pdev) > Applied to drm-misc-fixes Neil