From 208eee2a9db7e70109583e3481371967cd1d4764 Mon Sep 17 00:00:00 2001 From: Frederik Deweerdt Date: Thu, 5 Apr 2007 16:57:41 +0200 Subject: [PATCH 1/1] [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: [] snd_pcm_action_group+0x90/0x240 [39701.405131] [39701.405131] but task is already holding lock: [39701.405134] (&substream->self_group.lock){....}, at: [] 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: [] snd_pcm_action_lock_irq+0x27/0xb0 [39701.405155] #1: (&substream->group->lock){....}, at: [] snd_pcm_action_lock_irq+0x38/0xb0 [39701.405163] #2: (&substream->self_group.lock){....}, at: [] snd_pcm_action_lock_irq+0x3f/0xb0 [39701.405171] [39701.405171] stack backtrace: [39701.405174] [] show_trace_log_lvl+0x1a/0x30 [39701.405179] [] show_trace+0x12/0x20 [39701.405183] [] dump_stack+0x16/0x20 [39701.405187] [] __lock_acquire+0xbd0/0x1040 [39701.405193] [] lock_acquire+0x70/0x90 [39701.405197] [] _spin_lock+0x36/0x50 [39701.405203] [] snd_pcm_action_group+0x90/0x240 [39701.405207] [] snd_pcm_action_lock_irq+0x53/0xb0 [39701.405211] [] snd_pcm_common_ioctl1+0x35f/0xfb0 [39701.405215] [] snd_pcm_playback_ioctl1+0x34/0x420 [39701.405219] [] snd_pcm_playback_ioctl+0x43/0x50 [39701.405223] [] do_ioctl+0x28/0x80 [39701.405229] [] vfs_ioctl+0x57/0x290 [39701.405233] [] sys_ioctl+0x39/0x60 [39701.405237] [] sysenter_past_esp+0x5d/0x99 [39701.405240] ======================= The attached lockdep annotation silences the warning. Signed-off-by: Frederik Deweerdt Signed-off-by: Takashi Iwai Signed-off-by: Jaroslav Kysela --- sound/core/pcm_native.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 42a039c..a96733a 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; -- 1.8.2.3