[PATCH v1 0/3] media: sun4i-csi: fix lifecycle bugs (leak, IRQ, unbind)
Cong Nguyen
congnt264 at gmail.com
Sat Aug 8 04:05:26 PDT 2026
While addressing an async-notifier cleanup leak in this driver, I audited
the surrounding device lifecycle and found three separate pre-existing
issues, all present since the driver was introduced. They are independent
of each other; this series groups them because they touch the same driver.
1/3: sun4i_csi_notify_complete() registers the video device and the bridge
subdev before creating the media links. On a failure in the later
steps it only unregistered the media device, leaving /dev/videoX
registered. Since probe then aborts and the devm-managed context
(embedding the video_device) is freed, an open() would touch freed
memory. Unwind the registrations in reverse order.
2/3: sun4i_csi_stop_streaming() stops the capture engine but never disables
the frame-done interrupt or synchronizes with the handler. A late IRQ
after the block is runtime-suspended (on release) can access gated
registers and crash. Clear CSI_INT_EN_REG and synchronize_irq().
3/3: The async notifier ops lack an .unbind callback, so csi->src_subdev is
left dangling when the remote sensor is unbound; a later STREAMON
dereferences the freed subdev. Add .unbind to unregister the video
device and clear the pointer, matching stm32-dcmi/atmel-isi/mcam.
All three are marked for stable. Compile-tested (COMPILE_TEST) and
checkpatch --strict clean. I do not have the hardware, so testing on a
real A10/A20 CSI setup would be appreciated.
Cong Nguyen (3):
media: sun4i-csi: fix video device and subdev leak in
notify_complete()
media: sun4i-csi: disable interrupts when stopping streaming
media: sun4i-csi: add notifier unbind callback to drop the source
subdev
.../platform/sunxi/sun4i-csi/sun4i_csi.c | 25 +++++++++++++++++--
.../platform/sunxi/sun4i-csi/sun4i_csi.h | 1 +
.../platform/sunxi/sun4i-csi/sun4i_dma.c | 11 ++++++++
3 files changed, 35 insertions(+), 2 deletions(-)
--
2.25.1
More information about the linux-arm-kernel
mailing list