linux/drivers/gpu/drm/vc4
Karl Mehltretter 073a30d75f
drm/vc4: Use managed KMS polling to fix UAF on unbind
vc4_kms_load() calls drm_kms_helper_poll_init() but the driver provides
no matching drm_kms_helper_poll_fini(). The output poll work stays
scheduled after unbind and runs on the freed drm_device:

  # modprobe vc4; rmmod vc4; sleep 10
  BUG: KASAN: slab-use-after-free in delayed_work_timer_fn
  BUG: KASAN: slab-use-after-free in drm_client_dev_hotplug [drm]
  Workqueue: events output_poll_execute [drm_kms_helper]
  Allocated by task 171: __devm_drm_dev_alloc
  Freed by task 262 (rmmod): drm_dev_put / component_del

Use drmm_kms_helper_poll_init() so polling is finalized with the device,
as other drivers do.

Fixes: c8b75bca92 ("drm/vc4: Add KMS support for Raspberry Pi.")
Assisted-by: Claude:claude-fable-5
Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Link: https://patch.msgid.link/20260822143110.68594-1-kmehltretter@gmail.com
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Maíra Canal <mcanal@igalia.com>
2026-09-14 12:11:42 -03:00
..
tests drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
Kconfig drm/vc4: hdmi: switch to generic CEC helpers 2025-09-15 21:42:55 +03:00
Makefile
vc4_bo.c drm/vc4: Shut down BO cache timer before teardown 2026-07-23 20:07:23 -03:00
vc4_crtc.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
vc4_debugfs.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
vc4_dpi.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
vc4_drv.c drm/vc4: Clean-up UAPI header inclusion 2026-04-02 10:21:12 -03:00
vc4_drv.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
vc4_dsi.c drm/vc4: dsi: Switch to atomic_create_state 2026-06-22 11:24:55 +02:00
vc4_fence.c
vc4_gem.c drm-misc-next for v7.1-rc1: 2026-05-06 10:12:25 +10:00
vc4_hdmi_phy.c drm/vc4: hdmi: Add support for BCM2712 HDMI controllers 2024-11-27 14:37:20 +00:00
vc4_hdmi_regs.h drm/vc4: hdmi: Add support for BCM2712 HDMI controllers 2024-11-27 14:37:20 +00:00
vc4_hdmi.c drm/vc4: hdmi: take i2c adapter module reference 2026-07-18 11:10:13 -03:00
vc4_hdmi.h drm/display: hdmi: Use drm_output_color_format instead of hdmi_colorspace 2026-03-24 13:54:35 +01:00
vc4_hvs.c drm/vc4: hvs/v3d: Fix null dereference in unbind 2026-07-22 11:29:29 -03:00
vc4_irq.c drm/vc4: Supply the overflow slot size in BPOS, not the whole bin BO size 2026-07-28 09:16:09 -03:00
vc4_kms.c drm/vc4: Use managed KMS polling to fix UAF on unbind 2026-09-14 12:11:42 -03:00
vc4_packet.h
vc4_perfmon.c Merge drm/drm-next into drm-misc-next 2026-02-23 11:48:20 +01:00
vc4_plane.c drm-misc-next for v7.1-rc1: 2026-05-06 10:12:25 +10:00
vc4_qpu_defines.h
vc4_regs.h drm/vc4: hdmi: Support 2712 D-step register map 2024-11-27 14:37:21 +00:00
vc4_render_cl.c drm/vc4: Clean-up UAPI header inclusion 2026-04-02 10:21:12 -03:00
vc4_trace_points.c
vc4_trace.h
vc4_txp.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
vc4_v3d.c drm/vc4: hvs/v3d: Fix null dereference in unbind 2026-07-22 11:29:29 -03:00
vc4_validate_shaders.c drm/vc4: fix krealloc() memory leak 2026-06-09 15:29:57 -03:00
vc4_validate.c drm/vc4: Zero the tile state data array before each BIN job 2026-07-28 09:16:30 -03:00
vc4_vec.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00