linux/include/media
Ricardo Ribalda 1380f5754c [media] videobuf2: Add missing lock held on vb2_fop_release
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>
2013-12-09 11:43:07 -02:00
..
blackfin [media] blackfin: add error frame support 2013-02-06 09:16:58 -02:00
davinci [media] media: davinci: vpif: display: add V4L2-async support 2013-07-26 13:17:15 -03:00
ad9389b.h [media] ad9389b: driver for the Analog Devices AD9389B video encoder 2012-09-13 16:15:36 -03:00
adp1653.h [media] v4l, smiapp, smiapp-pll, adp1653: Update contact information 2012-11-21 13:34:50 -02:00
adv7183.h [media] adv7183: add adv7183 decoder driver 2012-03-19 15:04:10 -03:00
adv7343.h [media] media: i2c: adv7343: make the platform data members as array 2013-07-26 13:20:36 -03:00
adv7393.h [PATCH] media: add Analog Devices ADV7393 video encoder driver 2012-07-06 15:46:17 -03:00
adv7511.h [media] adv7511: add new video encoder 2013-08-26 07:53:43 -03:00
adv7604.h [media] adv7604: Replace prim_mode by mode 2012-11-21 17:43:49 -02:00
adv7842.h [media] adv7842: add new video decoder driver 2013-08-26 07:51:44 -03:00
ak881x.h V4L/DVB: V4L: v4l2-subdev driver for AK8813 and AK8814 TV-encoders from AKM 2010-05-19 12:58:02 -03:00
as3645a.h [media] as3645a: Add driver for LED flash controller 2011-12-20 09:36:18 -02:00
atmel-isi.h [media] atmel-isi: add code to enable/disable ISI_MCK clock 2012-01-06 11:01:11 -02:00
bt819.h [media] bt819: the ioctls in the header are internal to the kernel 2010-12-29 08:17:19 -02:00
cs53l32a.h
cs5345.h
cx2341x.h [media] v4l2-ctrls: use const char * const * for the menu arrays 2010-12-30 08:02:14 -02:00
cx25840.h [media] cx25840: Add a flag to enable the CX23888 DIF to be enabled or not 2012-01-05 06:49:38 -02:00
gpio-ir-recv.h [media] media: gpio-ir-recv: add allowed_protos for platform data 2012-07-06 18:21:53 -03:00
i2c-addr.h V4L/DVB (9940): bt832: remove this driver 2008-12-30 09:39:25 -02:00
ir-kbd-i2c.h [media] rc-core: add separate defines for protocol bitmaps and numbers 2012-10-27 11:49:51 -02:00
ir-rx51.h [media] media: rc: Introduce RX51 IR transmitter driver 2012-08-13 16:53:45 -03:00
lirc_dev.h [media] media: lirc: Allow lirc dev to talk to rc device 2013-07-31 16:30:27 -03:00
lirc.h Fix common misspellings 2011-03-31 11:26:23 -03:00
lm3560.h [media] media: i2c: add driver for dual LED Flash, lm3560 2013-10-31 06:36:39 -02:00
m5mols.h [media] m5mols: Remove superfluous irq field from the platform data struct 2011-09-24 00:23:03 -03:00
m52790.h
media-device.h [media] media: Change media device link_notify behaviour 2013-06-12 22:16:27 -03:00
media-devnode.h [media] media: Add 64--32 bit compat ioctl handler 2013-03-18 20:44:36 -03:00
media-entity.h [media] media: Add support for circular graph traversal 2013-08-18 07:16:48 -03:00
mmp-camera.h [media] marvell-cam: Basic working MMP camera driver 2011-07-27 17:53:01 -03:00
msp3400.h V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
mt9m032.h [media] v4l: Add driver for Micron MT9M032 camera sensor 2012-03-19 18:56:33 -03:00
mt9p031.h [media] mt9p031: Use the common clock framework 2013-04-14 16:03:22 -03:00
mt9t001.h [media] mt9t001: Implement V4L2_CID_PIXEL_RATE control 2012-05-24 09:25:15 -03:00
mt9t112.h V4L/DVB (13670): soc-camera: Add mt9t112 camera driver 2009-12-16 09:27:41 -02:00
mt9v011.h [media] v4l2-subdev: remove core.s_config and v4l2_i2c_new_subdev_cfg() 2011-01-19 11:45:30 -02:00
mt9v022.h [media] mt9v022: set y_skip_top field to zero as default 2012-11-22 11:36:50 -02:00
mt9v032.h [media] mt9v032: Use the common clock framework 2013-08-22 11:37:46 -03:00
noon010pc30.h [media] Add v4l2 subdev driver for NOON010PC30L image sensor 2011-03-21 20:31:40 -03:00
omap1_camera.h [media] SoC Camera: add driver for OMAP1 camera interface 2010-10-21 07:55:37 -02:00
omap3isp.h [media] omap3isp: Use the common clock framework 2013-04-14 20:21:12 -03:00
omap4iss.h [media] v4l: omap4iss: Add support for OMAP4 camera interface - Core 2013-12-03 17:21:04 -02:00
ov772x.h [media] V4L: ov772x: remove superfluous soc-camera client operations 2011-11-03 18:28:05 -02:00
ov7670.h [media] media: ov7670: Add possibility to disable pixclk during hblank 2013-02-08 14:35:06 -02:00
ov9650.h [media] V4L: Add driver for OV9650/52 image sensors 2013-02-05 15:21:15 -02:00
radio-si4713.h V4L/DVB (12551): FM TX: si4713: Add files to add radio interface for si4713 2009-09-12 12:19:19 -03:00
rc-core.h [media] media: rc: Add rc_open/close and use count to rc_dev 2013-07-31 16:28:01 -03:00
rc-map.h [media] rc: Add rc-delock-61959 2013-05-21 08:18:19 -03:00
rj54n1cb0c.h V4L/DVB (13661): rj54n1cb0c: Add cropping, auto white balance, restrict sizes, add platform data 2009-12-16 09:27:30 -02:00
s3c_camif.h [media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface 2012-11-28 09:43:34 -02:00
s5c73m3.h [media] V4L: Add S5C73M3 camera driver 2013-02-05 17:39:04 -02:00
s5k4ecgx.h [media] Add v4l2 subdev driver for S5K4ECGX sensor 2012-09-26 17:32:54 -03:00
s5k6aa.h [media] v4l: Add v4l2 subdev driver for S5K6AAFX sensor 2011-11-03 18:29:11 -02:00
s5p_fimc.h [media] exynos4-is: Correct colorspace handling at FIMC-LITE 2013-06-28 15:33:27 -03:00
s5p_hdmi.h [media] media: s5p-hdmi: add HPD GPIO to platform data 2012-10-05 23:11:51 -03:00
saa6588.h [media] saa6588: rename rds.h to saa6588.h 2010-12-29 08:17:18 -02:00
saa6752hs.h
saa7115.h [media] saa7115: make multi-line comments compliant with CodingStyle 2013-08-18 08:39:24 -03:00
saa7127.h
saa7146_vv.h [media] saa7146: fix querycap, vbi/video separation and g/s_register 2012-05-14 15:00:49 -03:00
saa7146.h [media] saa7146: remove V4L2_FL_LOCK_ALL_FOPS 2012-08-09 19:43:28 -03:00
sh_mobile_ceu.h [media] V4L2: soc-camera: fix uninitialised use compiler warning 2013-06-28 14:57:18 -03:00
sh_mobile_csi2.h [media] sh_mobile_ceu_camera: add asynchronous subdevice probing support 2013-06-21 16:35:53 -03:00
sh_vou.h [media] sh_vou: Don't use module names to load I2C modules 2010-10-22 21:53:33 -02:00
si476x.h [media] v4l2: Add a V4L2 driver for SI476X MFD 2013-04-18 21:20:34 -03:00
si4713.h [media] radio-si4713: Add regulator framework support 2010-12-29 08:16:35 -02:00
sii9234.h [media] v4l: s5p-tv: add sii9234 driver 2012-02-28 18:25:46 -03:00
smiapp.h [media] smiapp: Call the clock "ext_clk" 2013-08-22 11:39:12 -03:00
soc_camera_platform.h [media] soc-camera: split struct soc_camera_link into host and subdevice parts 2013-01-05 01:38:02 -02:00
soc_camera.h [media] V4L2: soc-camera: work around unbalanced calls to .s_power() 2013-10-31 04:38:40 -02:00
soc_mediabus.h [media] soc_camera: Add RGB666 & RGB888 formats 2013-04-04 19:40:08 -03:00
sr030pc30.h [media] Add driver for Siliconfile SR030PC30 VGA camera 2010-10-21 07:55:49 -02:00
tea575x.h [media] tea575x: Move header from sound to media 2013-08-18 08:08:05 -03:00
ths7303.h [media] media: i2c: ths7303: remove init_enable option from pdata 2013-06-13 11:41:18 -03:00
timb_radio.h [media] radio-timb: Simplified platform data 2011-07-27 17:53:07 -03:00
timb_video.h [media] media: Add timberdale video-in driver 2010-12-29 08:16:46 -02:00
tuner-types.h
tuner.h [media] tuner-core: Change config from unsigned int to void * 2013-04-08 07:01:36 -03:00
tvaudio.h V4L/DVB (11376): tvaudio.h: add static inline to retrieve the list of possible i2c addrs. 2009-04-06 21:44:25 -03:00
tveeprom.h include: Convert ethernet mac address declarations to use ETH_ALEN 2013-08-02 12:33:54 -07:00
tvp514x.h [media] media: tvp514x: remove field description 2013-02-06 08:18:49 -02:00
tvp5150.h
tvp7002.h [media] media: i2c: tvp7002: rearrange description of structure members 2013-05-27 09:29:56 -03:00
tw9910.h tw9910: use TABs for indentation 2010-02-26 15:10:59 -03:00
uda1342.h [media] uda1342: add new uda1342 audio codec driver 2013-03-24 12:24:11 -03:00
upd64031a.h
upd64083.h
v4l2-async.h [media] V4L: Merge struct v4l2_async_subdev_list with struct v4l2_subdev 2013-07-30 15:54:56 -03:00
v4l2-clk.h [media] V4L2: add a v4l2-clk helper macro to produce an I2C device ID 2013-10-31 04:33:02 -02:00
v4l2-common.h Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
v4l2-ctrls.h [media] v4l2-ctrls: fix typo in header file media/v4l2-ctrls.h 2013-10-17 05:52:25 -03:00
v4l2-dev.h [media] v4l2: always require v4l2_dev, rename parent to dev_parent 2013-06-21 11:07:12 -03:00
v4l2-device.h [media] v4l2-core: add code to check for specific ops 2013-03-24 11:59:02 -03:00
v4l2-dv-timings.h [media] v4l2-dv-timings: add callback to handle exceptions 2013-08-24 04:30:01 -03:00
v4l2-event.h [media] V4L: Add v4l2_event_subdev_unsubscribe() helper function 2013-02-05 15:04:55 -02:00
v4l2-fh.h [media] V4L: Add mem2mem ioctl and file operation helpers 2013-12-04 15:34:24 -02:00
v4l2-image-sizes.h [media] V4L: Add header file defining standard image sizes 2013-02-05 14:59:41 -02:00
v4l2-int-device.h [media] v4l2-int-device: remove unused chip_ident reference 2013-06-21 10:45:58 -03:00
v4l2-ioctl.h [media] v4l2-core: remove support for obsolete VIDIOC_DBG_G_CHIP_IDENT 2013-06-21 10:46:44 -03:00
v4l2-mediabus.h [media] media: OF: add "sync-on-green-active" property 2013-08-24 04:15:05 -03:00
v4l2-mem2mem.h [media] V4L: Add mem2mem ioctl and file operation helpers 2013-12-04 15:34:24 -02:00
v4l2-of.h [media] V4L: Remove incorrect EXPORT_SYMBOL() usage at v4l2-of.c 2013-04-04 19:57:13 -03:00
v4l2-subdev.h [media] v4l: Fix typo in v4l2_subdev_get_try_crop() 2013-10-31 08:10:10 -02:00
videobuf2-core.h [media] videobuf2: Add missing lock held on vb2_fop_release 2013-12-09 11:43:07 -02:00
videobuf2-dma-contig.h [media] videobuf2: correct the #ifndef text mistake in videobuf2-dma-contig.h 2012-06-18 19:54:42 -03:00
videobuf2-dma-sg.h [media] videobuf2-dma-sg: Replace vb2_dma_sg_desc with sg_table 2013-09-26 07:33:59 -03:00
videobuf2-memops.h [media] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call 2012-11-25 17:20:25 -02:00
videobuf2-vmalloc.h [media] Update Pawel Osciak's e-mail address 2011-03-22 04:55:05 -03:00
videobuf-core.h [media] videobuf-core.h: remove input fields 2012-07-05 18:03:20 -03:00
videobuf-dma-contig.h [media] videobuf-dma-contig: remove support for cached mem 2013-04-25 09:50:19 -03:00
videobuf-dma-sg.h doc: fix broken references 2011-09-27 18:08:04 +02:00
videobuf-dvb.h [media] dvb: get rid of fe_ioctl_override callback 2012-08-13 16:34:03 -03:00
videobuf-vmalloc.h V4L/DVB: videobuf: add ext_lock argument to the queue init functions 2010-10-21 01:06:14 -02:00
wm8775.h [media] Add proper audio support for Nova-S Plus with wm8775 ADC 2011-03-21 20:32:19 -03:00