linux/drivers/media
Ezequiel Garcia cbd9463da1 media: v4l2-mem2mem: Avoid calling .device_run in v4l2_m2m_job_finish
v4l2_m2m_job_finish() is typically called when
DMA operations complete, in interrupt handlers or DMA
completion callbacks. Calling .device_run from v4l2_m2m_job_finish
creates a nasty re-entrancy path into the driver.

Moreover, some implementation of .device_run might need to sleep,
as is the case for drivers supporting the Request API,
where controls are applied via v4l2_ctrl_request_setup,
which takes the ctrl handler mutex.

This commit adds a deferred context that calls v4l2_m2m_try_run,
and gets scheduled by v4l2_m2m_job_finish().

Before this change, device_run would be called from these
paths:

vb2_m2m_request_queue, or
v4l2_m2m_streamon, or
v4l2_m2m_qbuf
  v4l2_m2m_try_schedule
    v4l2_m2m_try_run
      .device_run

v4l2_m2m_job_finish
  v4l2_m2m_try_run
    .device_run

After this change, the latter is now gone and instead:

v4l2_m2m_device_run_work
  v4l2_m2m_try_run
    .device_run

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
2018-11-23 06:37:47 -05:00
..
cec media: cec: keep track of outstanding transmits 2018-11-23 05:56:14 -05:00
common media: v4l2-tpg: array index could become negative 2018-11-23 06:23:06 -05:00
dvb-core media updates for v4.20-rc1 2018-10-31 10:53:29 -07:00
dvb-frontends media updates for v4.20-rc1 2018-10-31 10:53:29 -07:00
firewire media: replace strcpy() by strscpy() 2018-09-11 13:32:17 -04:00
i2c media: adv*/tc358743/ths8200: fill in min width/height/pixelclock 2018-11-23 06:20:55 -05:00
mmc media: siano: use GFP_DMA only for smssdio 2018-05-15 08:04:42 -04:00
pci media: saa7134: hvr1110 can decode rc6 2018-11-22 13:31:32 -05:00
platform media: venus: firmware: add no TZ boot and shutdown routine 2018-11-23 06:34:12 -05:00
radio media: replace strcpy() by strscpy() 2018-09-11 13:32:17 -04:00
rc media: rc: ensure close() is called on rc_unregister_device 2018-11-22 13:33:24 -05:00
spi media: cxd2880-spi: Modified how to declare structure 2018-05-05 10:37:12 -04:00
tuners media: si2157: declare its own pads 2018-09-17 13:16:19 -04:00
usb media: pulse8-cec: return 0 when invalidating the logical address 2018-11-23 05:49:11 -05:00
v4l2-core media: v4l2-mem2mem: Avoid calling .device_run in v4l2_m2m_job_finish 2018-11-23 06:37:47 -05:00
Kconfig media: cec: Kconfig coding style issue 2018-05-09 16:26:50 -04:00
Makefile media: media-request: implement media requests 2018-08-31 11:04:51 -04:00
media-device.c media updates for v4.20-rc1 2018-10-31 10:53:29 -07:00
media-devnode.c MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
media-entity.c media: v4l2-mc: switch it to use the new approach to setup pipelines 2018-09-17 13:16:19 -04:00
media-request.c media: media-request: EPERM -> EACCES/EBUSY 2018-09-11 09:57:29 -04:00