linux/drivers/media/v4l2-core
Ricardo Ribalda 1056e4388b [media] v4l2-dev: Fix race condition on __video_register_device
When 2 devices are registered at the same time, in Part 2 both will get
the same minor number, making Part6 crash, because it cannot create a
create a device with a duplicated minor:
[    7.157648] ------------[ cut here ]------------
[    7.157666] WARNING: at fs/sysfs/dir.c:530 sysfs_add_one+0xbd/0xe0()
[    7.157669] sysfs: cannot create duplicate filename '/dev/char/81:1'
[    7.157672] Modules linked in: qtec_xform(+) qt5023_video(+) videobuf2_vmalloc videobuf2_dma_sg videobuf2_memops videobuf2_core gpio_xilinx(+) qtec_white qtec_cmosis(+) qtec_pcie qt5023
[    7.157694] CPU: 0 PID: 120 Comm: systemd-udevd Not tainted 3.10.0-qtec-standard #8
[    7.157698] Hardware name: QTechnology QT5022/QT5022, BIOS PM_2.1.0.309 X64 05/23/2013
[    7.157702]  0000000000000009 ffff8801788358e8 ffffffff8176c487 ffff880178835928
[    7.157707]  ffffffff8106f6f0 ffff880175759770 00000000ffffffef ffff880175759930
[    7.157712]  ffff8801788359e8 ffff880178bff000 ffff880175759930 ffff880178835988
[    7.157718] Call Trace:
[    7.157728]  [<ffffffff8176c487>] dump_stack+0x19/0x1b
[    7.157735]  [<ffffffff8106f6f0>] warn_slowpath_common+0x70/0xa0
[    7.157740]  [<ffffffff8106f7d6>] warn_slowpath_fmt+0x46/0x50
[    7.157746]  [<ffffffff81324b35>] ? strlcat+0x65/0x90
[    7.157750]  [<ffffffff811d516d>] sysfs_add_one+0xbd/0xe0
[    7.157755]  [<ffffffff811d5c6b>] sysfs_do_create_link_sd+0xdb/0x200
[    7.157760]  [<ffffffff811d5db1>] sysfs_create_link+0x21/0x40
[    7.157765]  [<ffffffff813e277b>] device_add+0x21b/0x6d0
[    7.157772]  [<ffffffff813f2985>] ? pm_runtime_init+0xe5/0xf0
[    7.157776]  [<ffffffff813e2c4e>] device_register+0x1e/0x30
[    7.157782]  [<ffffffff8153e8c3>] __video_register_device+0x313/0x610
[    7.157791]  [<ffffffffa00957c5>] qtec_xform_probe+0x465/0x7a4 [qtec_xform]
[    7.157797]  [<ffffffff813e7b13>] platform_drv_probe+0x43/0x80
[    7.157802]  [<ffffffff813e531a>] ? driver_sysfs_add+0x7a/0xb0
[    7.157807]  [<ffffffff813e584b>] driver_probe_device+0x8b/0x3a0
[    7.157812]  [<ffffffff813e5c0b>] __driver_attach+0xab/0xb0
[    7.157816]  [<ffffffff813e5b60>] ? driver_probe_device+0x3a0/0x3a0
[    7.157820]  [<ffffffff813e37fd>] bus_for_each_dev+0x5d/0xa0
[    7.157825]  [<ffffffff813e529e>] driver_attach+0x1e/0x20
[    7.157829]  [<ffffffff813e4d3e>] bus_add_driver+0x10e/0x280
[    7.157833]  [<ffffffffa0099000>] ? 0xffffffffa0098fff
[    7.157837]  [<ffffffffa0099000>] ? 0xffffffffa0098fff
[    7.157842]  [<ffffffff813e6317>] driver_register+0x77/0x170
[    7.157848]  [<ffffffff81151bcc>] ? __vunmap+0x9c/0x110
[    7.157852]  [<ffffffffa0099000>] ? 0xffffffffa0098fff
[    7.157857]  [<ffffffff813e7236>] platform_driver_register+0x46/0x50
[    7.157863]  [<ffffffffa0099010>] qtec_xform_plat_driver_init+0x10/0x12 [qtec_xform]
[    7.157869]  [<ffffffff810002ea>] do_one_initcall+0xea/0x1a0
[    7.157875]  [<ffffffff810cf1f1>] load_module+0x1a91/0x2630
[    7.157880]  [<ffffffff8133bee0>] ? ddebug_proc_show+0xe0/0xe0
[    7.157887]  [<ffffffff817760f2>] ? page_fault+0x22/0x30
[    7.157892]  [<ffffffff810cfe7a>] SyS_init_module+0xea/0x140
[    7.157898]  [<ffffffff8177e5b9>] tracesys+0xd0/0xd5
[    7.157902] ---[ end trace 660cc3a65a4bf01b ]---
[    7.157939] __video_register_device: device_register failed

Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Acked-by: Sakari Ailus <sakari.ailus@iki.fi>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2013-08-24 04:18:25 -03:00
..
Kconfig [media] media/v4l2: VIDEOBUF2_DMA_CONTIG should depend on HAS_DMA 2013-03-18 18:03:18 -03:00
Makefile [media] v4l2-dv-timings: add new helper module 2013-08-18 08:15:46 -03:00
tuner-core.c [media] tuner-core/simple: get_rf_strength can be tuner mode specific 2013-04-14 19:44:50 -03:00
v4l2-async.c [media] v4l2-async: Use proper list head for iteration over registered subdevs 2013-08-18 09:24:23 -03:00
v4l2-clk.c [media] V4L2: add temporary clock helpers 2013-06-21 16:28:02 -03:00
v4l2-common.c [media] v4l2: move dv-timings related code to v4l2-dv-timings.c 2013-08-18 08:16:54 -03:00
v4l2-compat-ioctl32.c [media] v4l2-core: remove support for obsolete VIDIOC_DBG_G_CHIP_IDENT 2013-06-21 10:46:44 -03:00
v4l2-ctrls.c [media] v4l2-ctrl: Suppress build warning from v4l2_ctrl_new_std_menu() 2013-08-24 04:17:50 -03:00
v4l2-dev.c [media] v4l2-dev: Fix race condition on __video_register_device 2013-08-24 04:18:25 -03:00
v4l2-device.c [media] v4l2-device: check if already unregistered 2013-06-21 11:00:51 -03:00
v4l2-dv-timings.c [media] v4l2: move dv-timings related code to v4l2-dv-timings.c 2013-08-18 08:16:54 -03:00
v4l2-event.c [media] V4L: Add v4l2_event_subdev_unsubscribe() helper function 2013-02-05 15:04:55 -02:00
v4l2-fh.c [media] v4l, smiapp, smiapp-pll, adp1653: Update contact information 2012-11-21 13:34:50 -02:00
v4l2-int-device.c
v4l2-ioctl.c [media] v4l2: always require v4l2_dev, rename parent to dev_parent 2013-06-21 11:07:12 -03:00
v4l2-mem2mem.c [media] v4l2-mem2mem: clear m2m context from job_queue before ctx streamoff 2013-08-24 04:04:41 -03:00
v4l2-of.c [media] media: OF: add "sync-on-green-active" property 2013-08-24 04:15:05 -03:00
v4l2-subdev.c [media] v4l: Don't warn during link validation when encountering a V4L2 devnode 2012-11-22 12:09:49 -02:00
videobuf2-core.c [media] media: vb2: Share code between vb2_prepare_buf and vb2_qbuf 2013-08-22 12:01:51 -03:00
videobuf2-dma-contig.c [media] media: videobuf2: fix the length check for mmap 2013-04-25 09:54:00 -03:00
videobuf2-dma-sg.c [media] media: videobuf2: fix the length check for mmap 2013-04-25 09:54:00 -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] videobuf2: add gfp_flags 2013-03-21 13:17:51 -03:00
videobuf-core.c [media] v4l: Tell user space we're using monotonic timestamps 2012-12-21 11:20:51 -02:00
videobuf-dma-contig.c [media] videobuf-dma-contig: use vm_iomap_memory() 2013-05-21 09:22:12 -03:00
videobuf-dma-sg.c [media] videobuf_vm_{open,close} race fixes 2013-05-21 08:56:56 -03:00
videobuf-dvb.c
videobuf-vmalloc.c [media] videobuf_vm_{open,close} race fixes 2013-05-21 08:56:56 -03:00