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(-) -- 2.20.1