1380f5754c
vb2_fop_release does not hold the lock although it is modifying the queue->owner field. This could lead to race conditions on the vb2_perform_io function when multiple applications are accessing the video device via read/write API: [ 308.297741] BUG: unable to handle kernel NULL pointer dereference at 0000000000000260 [ 308.297759] IP: [<ffffffffa07a9fd2>] vb2_perform_fileio+0x372/0x610 [videobuf2_core] [ 308.297794] PGD 159719067 PUD 158119067 PMD 0 [ 308.297812] Oops: 0000 #1 SMP [ 308.297826] Modules linked in: qt5023_video videobuf2_dma_sg qtec_xform videobuf2_vmalloc videobuf2_memops videobuf2_core qtec_white qtec_mem gpio_xilinx qtec_cmosis qtec_pcie fglrx(PO) spi_xilinx spi_bitbang qt5023 [ 308.297888] CPU: 1 PID: 2189 Comm: java Tainted: P O 3.11.0-qtec-standard #1 [ 308.297919] Hardware name: QTechnology QT5022/QT5022, BIOS PM_2.1.0.309 X64 05/23/2013 [ 308.297952] task: ffff8801564e1690 ti: ffff88014dc02000 task.ti: ffff88014dc02000 [ 308.297962] RIP: 0010:[<ffffffffa07a9fd2>] [<ffffffffa07a9fd2>] vb2_perform_fileio+0x372/0x610 [videobuf2_core] [ 308.297985] RSP: 0018:ffff88014dc03df8 EFLAGS: 00010202 [ 308.297995] RAX: 0000000000000000 RBX: ffff880158a23000 RCX: dead000000100100 [ 308.298003] RDX: 0000000000000000 RSI: dead000000200200 RDI: 0000000000000000 [ 308.298012] RBP: ffff88014dc03e58 R08: 0000000000000000 R09: 0000000000000001 [ 308.298020] R10: ffffea00051e8380 R11: ffff88014dc03fd8 R12: ffff880158a23070 [ 308.298029] R13: ffff8801549040b8 R14: 0000000000198000 R15: 0000000001887e60 [ 308.298040] FS: 00007f65130d5700(0000) GS:ffff88015ed00000(0000) knlGS:0000000000000000 [ 308.298049] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 308.298057] CR2: 0000000000000260 CR3: 0000000159630000 CR4: 00000000000007e0 [ 308.298064] Stack: [ 308.298071] ffff880156416c00 0000000000198000 0000000000000000 ffff880100000001 [ 308.298087] ffff88014dc03f50 00000000810a79ca 0002000000000001 ffff880154904718 [ 308.298101] ffff880156416c00 0000000000198000 ffff880154904338 ffff88014dc03f50 [ 308.298116] Call Trace: [ 308.298143] [<ffffffffa07aa3c4>] vb2_read+0x14/0x20 [videobuf2_core] [ 308.298198] [<ffffffffa07aa494>] vb2_fop_read+0xc4/0x120 [videobuf2_core] [ 308.298252] [<ffffffff8154ee9e>] v4l2_read+0x7e/0xc0 [ 308.298296] [<ffffffff8116e639>] vfs_read+0xa9/0x160 [ 308.298312] [<ffffffff8116e882>] SyS_read+0x52/0xb0 [ 308.298328] [<ffffffff81784179>] tracesys+0xd0/0xd5 [ 308.298335] Code: e5 d6 ff ff 83 3d be 24 00 00 04 89 c2 4c 8b 45 b0 44 8b 4d b8 0f 8f 20 02 00 00 85 d2 75 32 83 83 78 03 00 00 01 4b 8b 44 c5 48 <8b> 88 60 02 00 00 85 c9 0f 84 b0 00 00 00 8b 40 58 89 c2 41 89 [ 308.298487] RIP [<ffffffffa07a9fd2>] vb2_perform_fileio+0x372/0x610 [videobuf2_core] [ 308.298507] RSP <ffff88014dc03df8> [ 308.298514] CR2: 0000000000000260 [ 308.298526] ---[ end trace e8f01717c96d1e41 ]--- Signed-off-by: Ricardo Ribalda <ricardo.ribalda@gmail.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com> |
||
---|---|---|
.. | ||
blackfin | ||
davinci | ||
ad9389b.h | ||
adp1653.h | ||
adv7183.h | ||
adv7343.h | ||
adv7393.h | ||
adv7511.h | ||
adv7604.h | ||
adv7842.h | ||
ak881x.h | ||
as3645a.h | ||
atmel-isi.h | ||
bt819.h | ||
cs53l32a.h | ||
cs5345.h | ||
cx2341x.h | ||
cx25840.h | ||
gpio-ir-recv.h | ||
i2c-addr.h | ||
ir-kbd-i2c.h | ||
ir-rx51.h | ||
lirc_dev.h | ||
lirc.h | ||
lm3560.h | ||
m5mols.h | ||
m52790.h | ||
media-device.h | ||
media-devnode.h | ||
media-entity.h | ||
mmp-camera.h | ||
msp3400.h | ||
mt9m032.h | ||
mt9p031.h | ||
mt9t001.h | ||
mt9t112.h | ||
mt9v011.h | ||
mt9v022.h | ||
mt9v032.h | ||
noon010pc30.h | ||
omap1_camera.h | ||
omap3isp.h | ||
omap4iss.h | ||
ov772x.h | ||
ov7670.h | ||
ov9650.h | ||
radio-si4713.h | ||
rc-core.h | ||
rc-map.h | ||
rj54n1cb0c.h | ||
s3c_camif.h | ||
s5c73m3.h | ||
s5k4ecgx.h | ||
s5k6aa.h | ||
s5p_fimc.h | ||
s5p_hdmi.h | ||
saa6588.h | ||
saa6752hs.h | ||
saa7115.h | ||
saa7127.h | ||
saa7146_vv.h | ||
saa7146.h | ||
sh_mobile_ceu.h | ||
sh_mobile_csi2.h | ||
sh_vou.h | ||
si476x.h | ||
si4713.h | ||
sii9234.h | ||
smiapp.h | ||
soc_camera_platform.h | ||
soc_camera.h | ||
soc_mediabus.h | ||
sr030pc30.h | ||
tea575x.h | ||
ths7303.h | ||
timb_radio.h | ||
timb_video.h | ||
tuner-types.h | ||
tuner.h | ||
tvaudio.h | ||
tveeprom.h | ||
tvp514x.h | ||
tvp5150.h | ||
tvp7002.h | ||
tw9910.h | ||
uda1342.h | ||
upd64031a.h | ||
upd64083.h | ||
v4l2-async.h | ||
v4l2-clk.h | ||
v4l2-common.h | ||
v4l2-ctrls.h | ||
v4l2-dev.h | ||
v4l2-device.h | ||
v4l2-dv-timings.h | ||
v4l2-event.h | ||
v4l2-fh.h | ||
v4l2-image-sizes.h | ||
v4l2-int-device.h | ||
v4l2-ioctl.h | ||
v4l2-mediabus.h | ||
v4l2-mem2mem.h | ||
v4l2-of.h | ||
v4l2-subdev.h | ||
videobuf2-core.h | ||
videobuf2-dma-contig.h | ||
videobuf2-dma-sg.h | ||
videobuf2-memops.h | ||
videobuf2-vmalloc.h | ||
videobuf-core.h | ||
videobuf-dma-contig.h | ||
videobuf-dma-sg.h | ||
videobuf-dvb.h | ||
videobuf-vmalloc.h | ||
wm8775.h |