linux/drivers/media/v4l2-core
Hans Verkuil 6cf11ee630 [media] vb2: fix vb2_thread_stop race conditions
The locking scheme inside the vb2 thread is unsafe when stopping the
thread. In particular kthread_stop was called *after* internal data
structures were cleaned up instead of doing that before. In addition,
internal vb2 functions were called after threadio->stop was set to
true and vb2_internal_streamoff was called. This is also not allowed.

All this led to a variety of race conditions and kernel warnings and/or
oopses.

Fixed by moving the kthread_stop call up before the cleanup takes
place, and by checking threadio->stop before calling internal vb2
queuing operations.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: <stable@vger.kernel.org>      # for v3.16 and up
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-01-21 21:07:26 -02:00
..
Kconfig v4l2-pci-skeleton: Only build if PCI is available 2014-09-26 11:02:58 +02:00
Makefile [media] vb2: Add videobuf2-dvb support 2014-04-16 18:59:29 -03:00
tuner-core.c [media] tuner-core: use true/false for boolean vars 2014-09-03 17:59:14 -03:00
v4l2-async.c [media] v4l2-async: Don't use dynamic static allocation 2013-11-08 09:45:43 -02:00
v4l2-clk.c [media] V4L2: add v4l2-clock helpers to register and unregister a fixed-rate clock 2013-10-31 04:31:30 -02:00
v4l2-common.c [media] v4l2-common: move v4l2_ctrl_check to cx2341x 2014-11-25 08:25:36 -02:00
v4l2-compat-ioctl32.c [media] V4L2: fix VIDIOC_CREATE_BUFS 32-bit compatibility mode data copy-back 2014-11-03 15:11:59 -02:00
v4l2-ctrls.c [media] v4l2-ctrls: fix sparse warning 2014-10-28 16:32:52 -02:00
v4l2-dev.c [media] v4l2-dev: vdev->v4l2_dev is always set, so simplify code 2014-11-25 08:21:33 -02:00
v4l2-device.c [media] v4l: Only get module if it's different than the driver for v4l2_dev 2014-05-13 13:41:44 -03:00
v4l2-dv-timings.c [media] v4l2-dv-timings: only check standards if non-zero 2014-09-21 20:40:33 -03:00
v4l2-event.c [media] v4l: Add source change event 2014-05-23 19:50:40 -03:00
v4l2-fh.c [media] media: v4l2-core: remove the use of V4L2_FL_USE_FH_PRIO flag 2014-07-04 16:14:22 -03:00
v4l2-ioctl.c [media] v4l2-ioctl: WARN_ON if querycap didn't fill device_caps 2014-12-16 23:21:39 -02:00
v4l2-mem2mem.c [media] v4l2-mem2mem: export v4l2_m2m_try_schedule 2014-07-22 12:06:50 -03:00
v4l2-of.c [media] v4l: of: Support empty port nodes 2014-03-11 09:38:49 -03:00
v4l2-subdev.c [media] v4l: subdev: Extend default link validation to cover field order 2014-08-21 15:25:12 -05:00
videobuf2-core.c [media] vb2: fix vb2_thread_stop race conditions 2015-01-21 21:07:26 -02:00
videobuf2-dma-contig.c [media] vb2: use dma_map_sg_attrs to prevent unnecessary sync 2014-11-25 09:09:19 -02:00
videobuf2-dma-sg.c [media] vb2: use dma_map_sg_attrs to prevent unnecessary sync 2014-11-25 09:09:19 -02:00
videobuf2-dvb.c [media] vb2: Add videobuf2-dvb support 2014-04-16 18:59:29 -03:00
videobuf2-memops.c [media] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call 2012-11-25 17:20:25 -02:00
videobuf2-vmalloc.c [media] V4L2: Deletion of an unnecessary check before the function call "vb2_put_vma" 2014-12-02 11:33:09 -02:00
videobuf-core.c [media] videobuf: fix sparse warnings 2014-11-05 09:07:58 -02:00
videobuf-dma-contig.c [media] videobuf-dma-contig: set vm_pgoff to be zero to pass the sanity check in vm_iomap_memory() 2014-10-24 09:32:41 -02:00
videobuf-dma-sg.c [media] vmalloc_sg: off by one in error handling 2014-08-21 15:25:31 -05:00
videobuf-dvb.c
videobuf-vmalloc.c [media] Revert "[media] videobuf_vm_{open,close} race fixes" 2014-02-04 06:29:46 -02:00