mirror of https://github.com/torvalds/linux.git
vidiocgmbuf() does this:
mutex_lock(&fh->cap.vb_lock);
retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
V4L2_MEMORY_MMAP);
and videobuf_mmap_setup() then just does
mutex_lock(&q->vb_lock);
ret = __videobuf_mmap_setup(q, bcount, bsize, memory);
mutex_unlock(&q->vb_lock);
which is an obvious double-take deadlock.
This patch fixes this by having vidiocgmbuf() just call the
__videobuf_mmap_setup function instead.
Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Reported-by: Koos Vriezen <koos.vriezen@gmail.com>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||
|---|---|---|
| .. | ||
| audiochip.h | ||
| cs53l32a.h | ||
| cs5345.h | ||
| cx2341x.h | ||
| cx25840.h | ||
| i2c-addr.h | ||
| ir-common.h | ||
| ir-kbd-i2c.h | ||
| m52790.h | ||
| msp3400.h | ||
| ovcamchip.h | ||
| pwc-ioctl.h | ||
| rds.h | ||
| saa6752hs.h | ||
| saa7115.h | ||
| saa7127.h | ||
| saa7146.h | ||
| saa7146_vv.h | ||
| soc_camera.h | ||
| tuner-types.h | ||
| tuner.h | ||
| tvaudio.h | ||
| tveeprom.h | ||
| tvp5150.h | ||
| upd64031a.h | ||
| upd64083.h | ||
| v4l2-chip-ident.h | ||
| v4l2-common.h | ||
| v4l2-dev.h | ||
| v4l2-i2c-drv-legacy.h | ||
| v4l2-i2c-drv.h | ||
| v4l2-int-device.h | ||
| videobuf-core.h | ||
| videobuf-dma-sg.h | ||
| videobuf-dvb.h | ||
| videobuf-vmalloc.h | ||
| wm8775.h | ||