diff options
author | Maxime Ripard <maxime@cerno.tech> | 2021-07-07 12:51:12 +0300 |
---|---|---|
committer | Maxime Ripard <maxime@cerno.tech> | 2021-07-15 11:50:09 +0300 |
commit | 44fe9f90eb9d2533d049b4ba09540eed6cad9f49 (patch) | |
tree | 68025515b94f4e03e624dff5739606e9094e1758 /drivers | |
parent | 776efe800feda95a29cefecce1ce36cc27d70b29 (diff) | |
download | linux-44fe9f90eb9d2533d049b4ba09540eed6cad9f49.tar.xz |
drm/vc4: hdmi: Only call into DRM framework if registered
Our hotplug handler will currently call the drm_kms_helper_hotplug_event
every time a hotplug interrupt is called.
However, since the device is registered after all the drivers have
finished their bind callback, we have a window between when we install
our interrupt handler and when drm_dev_register() is eventually called
where our handler can run and call drm_kms_helper_hotplug_event but the
device hasn't been registered yet, causing a null pointer dereference.
Fix this by making sure we only call drm_kms_helper_hotplug_event if our
device has been properly registered.
Fixes: f4790083c7c2 ("drm/vc4: hdmi: Rely on interrupts to handle hotplug")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210707095112.1469670-4-maxime@cerno.tech
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_hdmi.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 7f384b7dee6e..e4fcc107e450 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1580,7 +1580,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv) struct vc4_hdmi *vc4_hdmi = priv; struct drm_device *dev = vc4_hdmi->connector.dev; - if (dev) + if (dev && dev->registered) drm_kms_helper_hotplug_event(dev); return IRQ_HANDLED; |