6297691d5786c5dfd57dc1b234d21ee4bf98076f
[openwrt/staging/robimarko.git] /
1 From a4ea60641c2e5ac11d3472e723b33b36f16e6bcb Mon Sep 17 00:00:00 2001
2 From: Maxime Ripard <maxime@cerno.tech>
3 Date: Mon, 5 Jul 2021 16:15:56 +0200
4 Subject: [PATCH] drm/vc4: hdmi: Only call into DRM framework if
5 registered
6
7 Our hotplug handler will currently call the drm_kms_helper_hotplug_event
8 every time a hotplug interrupt is called.
9
10 However, since the device is registered after all the drivers have
11 finished their bind callback, we have a window between when we install
12 our interrupt handler and when drm_dev_register() is eventually called
13 where our handler can run and call drm_kms_helper_hotplug_event but the
14 device hasn't been registered yet, causing a null pointer dereference.
15
16 Fix this by making sure we only call drm_kms_helper_hotplug_event if our
17 device has been properly registered.
18
19 Fixes: f4790083c7c2 ("drm/vc4: hdmi: Rely on interrupts to handle hotplug")
20 Signed-off-by: Maxime Ripard <maxime@cerno.tech>
21 ---
22 drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
26 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
27 @@ -1603,7 +1603,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
28 struct vc4_hdmi *vc4_hdmi = priv;
29 struct drm_device *dev = vc4_hdmi->connector.dev;
30
31 - if (dev)
32 + if (dev && dev->registered)
33 drm_kms_helper_hotplug_event(dev);
34
35 return IRQ_HANDLED;