FYI, in case this is of interest:
======================================================
[ INFO: possible circular locking dependency detected ]
3.19.0-rc7+ #297 Tainted: G W
-------------------------------------------------------
mpv/15932 is trying to acquire lock:
(s_active#37){++++.+}, at: [<ffffffff811a1b48>]
kernfs_remove_by_name_ns+0x6b/0x87
but task is already holding lock:
(&queue->mutex){+.+.+.}, at: [<ffffffffa06b3aea>]
uvc_queue_streamoff+0x24/0x48 [uvcvideo]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #2 (&queue->mutex){+.+.+.}:
[<ffffffff81079571>] lock_acquire+0x149/0x191
[<ffffffff813d9f26>] mutex_lock_nested+0x6b/0x39e
[<ffffffffa06b3b32>] uvc_queue_mmap+0x24/0x48 [uvcvideo]
[<ffffffffa06b3f87>] uvc_v4l2_mmap+0x42/0x49 [uvcvideo]
[<ffffffffa05f710c>] v4l2_mmap+0x43/0x83 [videodev]
[<ffffffff81116cd9>] mmap_region+0x26f/0x44b
[<ffffffff81117177>] do_mmap_pgoff+0x2c2/0x32b
[<ffffffff81102115>] vm_mmap_pgoff+0x7a/0xad
[<ffffffff8111584c>] SyS_mmap_pgoff+0x162/0x195
[<ffffffff81007265>] SyS_mmap+0x16/0x22
[<ffffffff813dc152>] system_call_fastpath+0x12/0x17
-> #1 (&mm->mmap_sem){++++++}:
[<ffffffff81079571>] lock_acquire+0x149/0x191
[<ffffffff8110e9c5>] might_fault+0x81/0xa4
[<ffffffff811a23b3>] kernfs_fop_write+0xb7/0x149
[<ffffffff81143b28>] vfs_write+0xa2/0x122
[<ffffffff81143d82>] SyS_write+0x50/0x85
[<ffffffff813dc152>] system_call_fastpath+0x12/0x17
-> #0 (s_active#37){++++.+}:
[<ffffffff81078c1d>] __lock_acquire+0xaf0/0xe67
[<ffffffff81079571>] lock_acquire+0x149/0x191
[<ffffffff811a1010>] __kernfs_remove+0x14d/0x2da
[<ffffffff811a1b48>] kernfs_remove_by_name_ns+0x6b/0x87
[<ffffffff811a3bd7>] kernfs_remove_by_name+0xb/0xd
[<ffffffff811a4056>] sysfs_unmerge_group+0x36/0x4c
[<ffffffff812bf608>] rpm_sysfs_remove+0x14/0x16
[<ffffffff812bf637>] dpm_sysfs_remove+0x2d/0x52
[<ffffffff812b63b9>] device_del+0x42/0x1f8
[<ffffffff812b65b3>] device_unregister+0x44/0x50
[<ffffffffa0085d57>] usb_remove_ep_devs+0x1c/0x29 [usbcore]
[<ffffffffa007f342>] remove_intf_ep_devs+0x2f/0x45 [usbcore]
[<ffffffffa0081428>] usb_set_interface+0x22f/0x2f3 [usbcore]
[<ffffffffa06b7709>] uvc_video_enable+0x31/0x14c [uvcvideo]
[<ffffffffa06b37f7>] uvc_stop_streaming+0x24/0x50 [uvcvideo]
[<ffffffffa061c680>] __vb2_queue_cancel+0x25/0x143 [videobuf2_core]
[<ffffffffa061cb3d>] vb2_internal_streamoff+0x30/0x8f [videobuf2_core]
[<ffffffffa061ccfe>] vb2_streamoff+0x3b/0x43 [videobuf2_core]
[<ffffffffa06b3af5>] uvc_queue_streamoff+0x2f/0x48 [uvcvideo]
[<ffffffffa06b462e>] uvc_ioctl_streamoff+0x44/0x57 [uvcvideo]
[<ffffffffa05f84a5>] v4l_streamoff+0x15/0x17 [videodev]
[<ffffffffa05fbd22>] __video_do_ioctl+0x170/0x246 [videodev]
[<ffffffffa05fc0ac>] video_usercopy+0x2b4/0x589 [videodev]
[<ffffffffa05fc391>] video_ioctl2+0x10/0x12 [videodev]
[<ffffffffa05f7451>] v4l2_ioctl+0x78/0xf8 [videodev]
[<ffffffff81152655>] do_vfs_ioctl+0x47f/0x4c7
[<ffffffff811526eb>] SyS_ioctl+0x4e/0x7f
[<ffffffff813dc152>] system_call_fastpath+0x12/0x17
other info that might help us debug this:
Chain exists of:
s_active#37 --> &mm->mmap_sem --> &queue->mutex
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&queue->mutex);
lock(&mm->mmap_sem);
lock(&queue->mutex);
lock(s_active#37);
*** DEADLOCK ***
2 locks held by mpv/15932:
#0: (&streaming->mutex){+.+.+.}, at: [<ffffffffa06b461e>]
uvc_ioctl_streamoff+0x34/0x57 [uvcvideo]
#1: (&queue->mutex){+.+.+.}, at: [<ffffffffa06b3aea>]
uvc_queue_streamoff+0x24/0x48 [uvcvideo]
stack backtrace:
CPU: 1 PID: 15932 Comm: mpv Tainted: G W 3.19.0-rc7+ #297
Hardware name: LENOVO 2776LEG/2776LEG, BIOS 6EET55WW (3.15 ) 12/19/2011
ffffffff81df0580 ffff8801be25f7c8 ffffffff813d6111 0000000000000000
ffffffff81e16010 ffff8801be25f818 ffffffff813d3e26 ffff8801be25f808
ffff8801be16c990 ffff8801be16d148 ffff8801be16c990 ffff8801be16d148
Call Trace:
[<ffffffff813d6111>] dump_stack+0x4c/0x65
[<ffffffff813d3e26>] print_circular_bug+0x1f8/0x209
[<ffffffff81078c1d>] __lock_acquire+0xaf0/0xe67
[<ffffffff81077f48>] ? mark_lock+0x2d/0x212
[<ffffffff81079571>] lock_acquire+0x149/0x191
[<ffffffff811a1b48>] ? kernfs_remove_by_name_ns+0x6b/0x87
[<ffffffff811a1010>] __kernfs_remove+0x14d/0x2da
[<ffffffff811a1b48>] ? kernfs_remove_by_name_ns+0x6b/0x87
[<ffffffff811a08cc>] ? kernfs_find_ns+0xbe/0x100
[<ffffffff811a1b48>] kernfs_remove_by_name_ns+0x6b/0x87
[<ffffffff811a3bd7>] kernfs_remove_by_name+0xb/0xd
[<ffffffff811a4056>] sysfs_unmerge_group+0x36/0x4c
[<ffffffff812bf608>] rpm_sysfs_remove+0x14/0x16
[<ffffffff812bf637>] dpm_sysfs_remove+0x2d/0x52
[<ffffffff812b63b9>] device_del+0x42/0x1f8
[<ffffffff81079885>] ? mark_held_locks+0x54/0x76
[<ffffffff812b65b3>] device_unregister+0x44/0x50
[<ffffffffa0085d57>] usb_remove_ep_devs+0x1c/0x29 [usbcore]
[<ffffffffa007f342>] remove_intf_ep_devs+0x2f/0x45 [usbcore]
[<ffffffffa0081428>] usb_set_interface+0x22f/0x2f3 [usbcore]
[<ffffffffa06b7709>] uvc_video_enable+0x31/0x14c [uvcvideo]
[<ffffffffa06b37f7>] uvc_stop_streaming+0x24/0x50 [uvcvideo]
[<ffffffffa061c680>] __vb2_queue_cancel+0x25/0x143 [videobuf2_core]
[<ffffffffa061cb3d>] vb2_internal_streamoff+0x30/0x8f [videobuf2_core]
[<ffffffffa061ccfe>] vb2_streamoff+0x3b/0x43 [videobuf2_core]
[<ffffffffa06b3af5>] uvc_queue_streamoff+0x2f/0x48 [uvcvideo]
[<ffffffffa06b462e>] uvc_ioctl_streamoff+0x44/0x57 [uvcvideo]
[<ffffffffa05f84a5>] v4l_streamoff+0x15/0x17 [videodev]
[<ffffffffa05fbd22>] __video_do_ioctl+0x170/0x246 [videodev]
[<ffffffffa05fc0ac>] video_usercopy+0x2b4/0x589 [videodev]
[<ffffffffa05fbbb2>] ? v4l2_is_known_ioctl+0x20/0x20 [videodev]
[<ffffffff8100a389>] ? native_sched_clock+0x35/0x37
[<ffffffff81067f6f>] ? sched_clock_local+0x12/0x75
[<ffffffff8106818f>] ? sched_clock_cpu+0x9d/0xb6
[<ffffffffa05fc391>] video_ioctl2+0x10/0x12 [videodev]
[<ffffffffa05f7451>] v4l2_ioctl+0x78/0xf8 [videodev]
[<ffffffff81152655>] do_vfs_ioctl+0x47f/0x4c7
[<ffffffff8115ac71>] ? rcu_read_unlock+0x56/0x5f
[<ffffffff8115ad55>] ? __fget+0x6d/0x78
[<ffffffff8115ada5>] ? __fget_light+0x45/0x52
[<ffffffff811526eb>] SyS_ioctl+0x4e/0x7f
[<ffffffff813dc152>] system_call_fastpath+0x12/0x17
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html