diff options
author | Frederik Deweerdt <frederik.deweerdt@gmail.com> | 2007-04-05 16:57:41 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-05-11 16:55:57 +0200 |
commit | 208eee2a9db7e70109583e3481371967cd1d4764 (patch) | |
tree | dcca009bd1c5fa0e51125a2b195c8f33dcb150e3 /sound/core/pcm_native.c | |
parent | 6b97eb45f2edca51250b6c1e3142801f069245fe (diff) | |
download | lwn-208eee2a9db7e70109583e3481371967cd1d4764.tar.gz lwn-208eee2a9db7e70109583e3481371967cd1d4764.zip |
[ALSA] pcm_native: lockdep warning when launching jack
When launching 'jackd -d alsa', lockdep issues the following warning:
[39701.405086] =============================================
[39701.405093] [ INFO: possible recursive locking detected ]
[39701.405107] 2.6.21-rc5-mm4 #2
[39701.405109] ---------------------------------------------
[39701.405112] jackd/17366 is trying to acquire lock:
[39701.405114] (&substream->self_group.lock){....}, at: [<c034d3c0>] snd_pcm_action_group+0x90/0x240
[39701.405131]
[39701.405131] but task is already holding lock:
[39701.405134] (&substream->self_group.lock){....}, at: [<c034d63f>] snd_pcm_action_lock_irq+0x3f/0xb0
[39701.405141]
[39701.405142] other info that might help us debug this:
[39701.405145] 3 locks held by jackd/17366:
[39701.405147] #0: (snd_pcm_link_rwlock){....}, at: [<c034d627>] snd_pcm_action_lock_irq+0x27/0xb0
[39701.405155] #1: (&substream->group->lock){....}, at: [<c034d638>] snd_pcm_action_lock_irq+0x38/0xb0
[39701.405163] #2: (&substream->self_group.lock){....}, at: [<c034d63f>] snd_pcm_action_lock_irq+0x3f/0xb0
[39701.405171]
[39701.405171] stack backtrace:
[39701.405174] [<c0103b8a>] show_trace_log_lvl+0x1a/0x30
[39701.405179] [<c0104912>] show_trace+0x12/0x20
[39701.405183] [<c01049c6>] dump_stack+0x16/0x20
[39701.405187] [<c013b980>] __lock_acquire+0xbd0/0x1040
[39701.405193] [<c013be60>] lock_acquire+0x70/0x90
[39701.405197] [<c0407846>] _spin_lock+0x36/0x50
[39701.405203] [<c034d3c0>] snd_pcm_action_group+0x90/0x240
[39701.405207] [<c034d653>] snd_pcm_action_lock_irq+0x53/0xb0
[39701.405211] [<c035046f>] snd_pcm_common_ioctl1+0x35f/0xfb0
[39701.405215] [<c0351544>] snd_pcm_playback_ioctl1+0x34/0x420
[39701.405219] [<c03519f3>] snd_pcm_playback_ioctl+0x43/0x50
[39701.405223] [<c017ecc8>] do_ioctl+0x28/0x80
[39701.405229] [<c017ed77>] vfs_ioctl+0x57/0x290
[39701.405233] [<c017efe9>] sys_ioctl+0x39/0x60
[39701.405237] [<c0102bf4>] sysenter_past_esp+0x5d/0x99
[39701.405240] =======================
The attached lockdep annotation silences the warning.
Signed-off-by: Frederik Deweerdt <frederik.deweerdt@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/core/pcm_native.c')
-rw-r--r-- | sound/core/pcm_native.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 42a039cc50a8..a96733a5beb8 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -718,7 +718,8 @@ static int snd_pcm_action_group(struct action_ops *ops, snd_pcm_group_for_each_entry(s, substream) { if (do_lock && s != substream) - spin_lock(&s->self_group.lock); + spin_lock_nested(&s->self_group.lock, + SINGLE_DEPTH_NESTING); res = ops->pre_action(s, state); if (res < 0) goto _unlock; |