mbox series

[v2,0/3] media: vimc: release vimc in release cb of v4l2_device

Message ID 20191107220345.21017-1-dafna.hirschfeld@collabora.com (mailing list archive)
Headers show
Series media: vimc: release vimc in release cb of v4l2_device | expand

Message

Dafna Hirschfeld Nov. 7, 2019, 10:03 p.m. UTC
This patchset solves a crash that happens when unbinding the vimc
device while it is streaming. Currently when the device is unbounded
the vimc entities are released immediately, this cause a crash
if the streaming thread or the capture device dereference them
after the release. The patchset solves this by deferring the release
to the release callback of v4l2_device. This ensures that
the vimc entities will be released after the last fh is closed
and so the streaming terminates before.

- The first patch replaces the usage of vimc_device.pdev.dev
with vimc.mdev.dev
- The second patch allocates the vimc_device dynamically.
This is needed since the release of the device is deferred
and might run after the device is initialized again.
- The third patch moves the release of the vimc_device
and all the vimc entities to the release callback of
v4l2_device.

Changes from v1:
v1 solved it by adding refcount to each entity.
(patch "media: vimc: crash fix - add refcount to vimc entities")
v2 is different solution due to comments from Hans Verkuil

Dafna Hirschfeld (3):
  media: vimc: replace vimc->pdev.dev with vimc->mdev.dev
  media: vimc: allocate vimc_device dynamically
  media: vimc: crash fix - release vimc in the v4l_device release

 drivers/media/platform/vimc/vimc-capture.c | 14 ++--
 drivers/media/platform/vimc/vimc-common.c  |  2 -
 drivers/media/platform/vimc/vimc-common.h  | 30 +++----
 drivers/media/platform/vimc/vimc-core.c    | 94 +++++++++++++++-------
 drivers/media/platform/vimc/vimc-debayer.c | 15 ++--
 drivers/media/platform/vimc/vimc-scaler.c  | 15 ++--
 drivers/media/platform/vimc/vimc-sensor.c  | 14 ++--
 7 files changed, 101 insertions(+), 83 deletions(-)