Re: dvb_device_open: possible circular locking dependency detected

2013-08-26 Thread Andy Walls
Knut Petersen  wrote:
>As long as I use the "Hauppauge WinTV Nova-HD-S2", nobody seems to be
>really interested in silencing deadlock warnings triggered by
>dvb_device_open().
>
>dvb lockdep problems are old, see Andy Walls mail written in 2010
>,
>but they still
>exist.
>
>
>[  186.583006] ==
>[  186.583009] [ INFO: possible circular locking dependency detected ]
>[  186.583013] 3.11.0-rc6-main+ #29 Not tainted
>[  186.583016] ---
>[  186.583019] kaffeine/1986 is trying to acquire lock:
>[  186.583022]  (&fe->lock){+.+.+.}, at: []
>videobuf_dvb_find_frontend+0x1b/0x43 [videobuf_dvb]
>[  186.583036]
>[  186.583036] but task is already holding lock:
>[  186.583039]  (minor_rwsem){..}, at: []
>dvb_device_open+0x26/0xfa [dvb_core]
>[  186.583054]
>[  186.583054] which lock already depends on the new lock.
>[  186.583054]
>[  186.583058]
>[  186.583058] the existing dependency chain (in reverse order) is:
>[  186.583062]
>[  186.583062] -> #2 (minor_rwsem){..}:
>[  186.583068][] lock_acquire+0x9b/0xd5
>[  186.583077][] down_write+0x20/0x3c
>[  186.583084][] dvb_register_device+0x158/0x20a
>[dvb_core]
>[  186.583093][] dvb_register_frontend+0x15b/0x18d
>[dvb_core]
>[  186.583104][] videobuf_dvb_register_bus+0xd1/0x2c7
>[videobuf_dvb]
>[  186.583110][] cx8802_dvb_probe+0x201b/0x2136
>[cx88_dvb]
>[  186.583118][] cx8802_register_driver+0x121/0x1f7
>[cx8802]
>[  186.583129][] 0xf8c5f01c
>[  186.583135][] do_one_initcall+0x6f/0xea
>[  186.583140][] load_module+0x168a/0x1985
>[  186.583146][] SyS_init_module+0x79/0x91
>[  186.583151][] syscall_call+0x7/0xb
>[  186.583156]
>[  186.583156] -> #1 (dvbdev_register_lock){+.+.+.}:
>[  186.583162][] lock_acquire+0x9b/0xd5
>[  186.583167][] mutex_lock_nested+0x3a/0x298
>[  186.583172][] dvb_register_device+0x22/0x20a
>[dvb_core]
>[  186.583181][] dvb_dmxdev_init+0xbb/0xf7 [dvb_core]
>[  186.583189][]
>videobuf_dvb_register_bus+0x179/0x2c7 [videobuf_dvb]
>[  186.583195][] cx8802_dvb_probe+0x201b/0x2136
>[cx88_dvb]
>[  186.583202][] cx8802_register_driver+0x121/0x1f7
>[cx8802]
>[  186.583208][] 0xf8c5f01c
>[  186.583212][] do_one_initcall+0x6f/0xea
>[  186.583217][] load_module+0x168a/0x1985
>[  186.583221][] SyS_init_module+0x79/0x91
>[  186.583226][] syscall_call+0x7/0xb
>[  186.583231]
>[  186.583231] -> #0 (&fe->lock){+.+.+.}:
>[  186.583237][] __lock_acquire+0xebd/0x154c
>[  186.583242][] lock_acquire+0x9b/0xd5
>[  186.583246][] mutex_lock_nested+0x3a/0x298
>[  186.583251][] videobuf_dvb_find_frontend+0x1b/0x43
>[videobuf_dvb]
>[  186.583257][] cx88_dvb_bus_ctrl+0x25/0x9d
>[cx88_dvb]
>[  186.583263][] dvb_frontend_open+0x12f/0x2ca
>[dvb_core]
>[  186.583273][] dvb_device_open+0x88/0xfa [dvb_core]
>[  186.583281][] chrdev_open+0xfc/0x11c
>[  186.583287][] do_dentry_open+0x169/0x203
>[  186.583293][] finish_open+0x2c/0x37
>[  186.583297][] do_last+0x818/0xa03
>[  186.583303][] path_openat+0x205/0x4d2
>[  186.583308][] do_filp_open+0x2a/0x63
>[  186.583312][] do_sys_open+0x140/0x1bb
>[  186.583317][] SyS_open+0x1d/0x1f
>[  186.583322][] syscall_call+0x7/0xb
>[  186.583327]
>[  186.583327] other info that might help us debug this:
>[  186.583327]
>[  186.583331] Chain exists of:
>[  186.583331]   &fe->lock --> dvbdev_register_lock --> minor_rwsem
>[  186.583331]
>[  186.583340]  Possible unsafe locking scenario:
>[  186.583340]
>[  186.583343]CPU0CPU1
>[  186.583346]
>[  186.583348]   lock(minor_rwsem);
>[  186.583352] lock(dvbdev_register_lock);
>[  186.583357]lock(minor_rwsem);
>[  186.583361]   lock(&fe->lock);
>[  186.583365]
>[  186.583365]  *** DEADLOCK ***
>[  186.583365]
>[  186.583369] 2 locks held by kaffeine/1986:
>[  186.583372]  #0:  (dvbdev_mutex){+.+...}, at: []
>dvb_device_open+0x1c/0xfa [dvb_core]
>[  186.583385]  #1:  (minor_rwsem){..}, at: []
>dvb_device_open+0x26/0xfa [dvb_core]
>[  186.583398]
>[  186.583398] stack backtrace:
>[  186.583403] CPU: 0 PID: 1986 Comm: kaffeine Not tainted
>3.11.0-rc6-main+ #29
>[  186.583406] Hardware name:/i915GMm-HFS, BIOS 6.00 PG 09/14/2005
>[  186.583410]   c0a3600c f0d79c5c c052f17a f0d79c8c c052d253
>c06b1687 c06b1553
>[  186.583421]  c06b151b c06b153c c06b151b f0d79cd4 f0ed64e0 0002
>f0ed695c f0ed6974
>[  186.583432]  f0d79d04 c01677cd f0ed695c 0002 0002 
>e000 f0d79ffc
>[  186.583443] Call Trace:
>[  186.583450]  [] dump_stack+0x16/0x18
>[  186.583456]  [] print_circular_bug+0x233

dvb_device_open: possible circular locking dependency detected

2013-08-25 Thread Knut Petersen

As long as I use the "Hauppauge WinTV Nova-HD-S2", nobody seems to be
really interested in silencing deadlock warnings triggered by dvb_device_open().

dvb lockdep problems are old,  but they still exist.

See: 
http://permalink.gmane.org/gmane.linux.drivers.video-input-infrastructure/27027


[  186.583006] ==
[  186.583009] [ INFO: possible circular locking dependency detected ]
[  186.583013] 3.11.0-rc6-main+ #29 Not tainted
[  186.583016] ---
[  186.583019] kaffeine/1986 is trying to acquire lock:
[  186.583022]  (&fe->lock){+.+.+.}, at: [] 
videobuf_dvb_find_frontend+0x1b/0x43 [videobuf_dvb]
[  186.583036]
[  186.583036] but task is already holding lock:
[  186.583039]  (minor_rwsem){..}, at: [] 
dvb_device_open+0x26/0xfa [dvb_core]
[  186.583054]
[  186.583054] which lock already depends on the new lock.
[  186.583054]
[  186.583058]
[  186.583058] the existing dependency chain (in reverse order) is:
[  186.583062]
[  186.583062] -> #2 (minor_rwsem){..}:
[  186.583068][] lock_acquire+0x9b/0xd5
[  186.583077][] down_write+0x20/0x3c
[  186.583084][] dvb_register_device+0x158/0x20a [dvb_core]
[  186.583093][] dvb_register_frontend+0x15b/0x18d [dvb_core]
[  186.583104][] videobuf_dvb_register_bus+0xd1/0x2c7 
[videobuf_dvb]
[  186.583110][] cx8802_dvb_probe+0x201b/0x2136 [cx88_dvb]
[  186.583118][] cx8802_register_driver+0x121/0x1f7 [cx8802]
[  186.583129][] 0xf8c5f01c
[  186.583135][] do_one_initcall+0x6f/0xea
[  186.583140][] load_module+0x168a/0x1985
[  186.583146][] SyS_init_module+0x79/0x91
[  186.583151][] syscall_call+0x7/0xb
[  186.583156]
[  186.583156] -> #1 (dvbdev_register_lock){+.+.+.}:
[  186.583162][] lock_acquire+0x9b/0xd5
[  186.583167][] mutex_lock_nested+0x3a/0x298
[  186.583172][] dvb_register_device+0x22/0x20a [dvb_core]
[  186.583181][] dvb_dmxdev_init+0xbb/0xf7 [dvb_core]
[  186.583189][] videobuf_dvb_register_bus+0x179/0x2c7 
[videobuf_dvb]
[  186.583195][] cx8802_dvb_probe+0x201b/0x2136 [cx88_dvb]
[  186.583202][] cx8802_register_driver+0x121/0x1f7 [cx8802]
[  186.583208][] 0xf8c5f01c
[  186.583212][] do_one_initcall+0x6f/0xea
[  186.583217][] load_module+0x168a/0x1985
[  186.583221][] SyS_init_module+0x79/0x91
[  186.583226][] syscall_call+0x7/0xb
[  186.583231]
[  186.583231] -> #0 (&fe->lock){+.+.+.}:
[  186.583237][] __lock_acquire+0xebd/0x154c
[  186.583242][] lock_acquire+0x9b/0xd5
[  186.583246][] mutex_lock_nested+0x3a/0x298
[  186.583251][] videobuf_dvb_find_frontend+0x1b/0x43 
[videobuf_dvb]
[  186.583257][] cx88_dvb_bus_ctrl+0x25/0x9d [cx88_dvb]
[  186.583263][] dvb_frontend_open+0x12f/0x2ca [dvb_core]
[  186.583273][] dvb_device_open+0x88/0xfa [dvb_core]
[  186.583281][] chrdev_open+0xfc/0x11c
[  186.583287][] do_dentry_open+0x169/0x203
[  186.583293][] finish_open+0x2c/0x37
[  186.583297][] do_last+0x818/0xa03
[  186.583303][] path_openat+0x205/0x4d2
[  186.583308][] do_filp_open+0x2a/0x63
[  186.583312][] do_sys_open+0x140/0x1bb
[  186.583317][] SyS_open+0x1d/0x1f
[  186.583322][] syscall_call+0x7/0xb
[  186.583327]
[  186.583327] other info that might help us debug this:
[  186.583327]
[  186.583331] Chain exists of:
[  186.583331]   &fe->lock --> dvbdev_register_lock --> minor_rwsem
[  186.583331]
[  186.583340]  Possible unsafe locking scenario:
[  186.583340]
[  186.583343]CPU0CPU1
[  186.583346]
[  186.583348]   lock(minor_rwsem);
[  186.583352] lock(dvbdev_register_lock);
[  186.583357]lock(minor_rwsem);
[  186.583361]   lock(&fe->lock);
[  186.583365]
[  186.583365]  *** DEADLOCK ***
[  186.583365]
[  186.583369] 2 locks held by kaffeine/1986:
[  186.583372]  #0:  (dvbdev_mutex){+.+...}, at: [] 
dvb_device_open+0x1c/0xfa [dvb_core]
[  186.583385]  #1:  (minor_rwsem){..}, at: [] 
dvb_device_open+0x26/0xfa [dvb_core]
[  186.583398]
[  186.583398] stack backtrace:
[  186.583403] CPU: 0 PID: 1986 Comm: kaffeine Not tainted 3.11.0-rc6-main+ #29
[  186.583406] Hardware name:/i915GMm-HFS, BIOS 6.00 PG 09/14/2005
[  186.583410]   c0a3600c f0d79c5c c052f17a f0d79c8c c052d253 c06b1687 
c06b1553
[  186.583421]  c06b151b c06b153c c06b151b f0d79cd4 f0ed64e0 0002 f0ed695c 
f0ed6974
[  186.583432]  f0d79d04 c01677cd f0ed695c 0002 0002  e000 
f0d79ffc
[  186.583443] Call Trace:
[  186.583450]  [] dump_stack+0x16/0x18
[  186.583456]  [] print_circular_bug+0x233/0x240
[  186.583462]  [] __lock_acquire+0xebd/0x154c
[  186.583469]  [] lock_acquire+0x9b/0xd5
[  186.583476]  [] ? videobuf_dvb_find_frontend+0x1b/0x43 
[videob