linux/drivers/media
Laurent Pinchart d7c0d43997 V4L/DVB (13831): uvcvideo: Fix oops caused by a race condition in buffer dequeuing
Buffers were marked as done before being removed from the IRQ queue. If
a userspace application dequeued and requeued the buffer fast enough
during that time window, the buffer could end up being deleted twice,
generating an oops in interrupt context.

Add a new state, UVC_BUF_STATE_READY, to mark buffers as ready for reuse
but not yet removed from the queue, and transition to UVC_BUF_STATE_DONE
only when the buffer is removed from the queue.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-01-17 11:31:35 -02:00
..
IR V4L/DVB (13617): ir: move input_register_device() to happen inside ir_input_register() 2009-12-16 00:18:45 -02:00
common V4L/DVB (13612): IR: Move common IR code to drivers/media/IR 2009-12-16 00:18:42 -02:00
dvb V4L/DVB (13820): lgdt3305: make one-bit bitfields unsigned 2010-01-17 11:31:34 -02:00
radio V4L/DVB (13690): radio/si470x: #include <sched.h> 2009-12-16 09:28:00 -02:00
video V4L/DVB (13831): uvcvideo: Fix oops caused by a race condition in buffer dequeuing 2010-01-17 11:31:35 -02:00
Kconfig V4L/DVB (13612): IR: Move common IR code to drivers/media/IR 2009-12-16 00:18:42 -02:00
Makefile V4L/DVB (13612): IR: Move common IR code to drivers/media/IR 2009-12-16 00:18:42 -02:00