All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Slaby <jirislaby@gmail.com>
To: Arjan van de Ven <arjan@linux.intel.com>
Cc: Andrew Morton <akpm@osdl.org>,
	alsa-devel@alsa-project.org, Takashi Iwai <tiwai@suse.de>,
	James@superbug.demon.co.uk, linux-kernel@vger.kernel.org,
	emu10k1-devel@lists.sourceforge.net, perex@suse.cz
Subject: Re: BUG: possible deadlock detected! (sound) [Was: 2.6.17-rc5-mm1]
Date: Thu, 01 Jun 2006 17:27:20 +0159	[thread overview]
Message-ID: <447F076F.9020209@gmail.com> (raw)
In-Reply-To: <1148993947.3636.61.camel@laptopd505.fenrus.org>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Arjan van de Ven napsal(a):
> On Tue, 2006-05-30 at 14:44 +0200, Takashi Iwai wrote:
>> This ops is a unique object assigned to a different "id" string.
>>
>> The first snd_seq_device_register_driver() called from emu10k1_synth.c
>> is the registration for the id "snd-synth-emu10k1".
>> Then in init_device(), the corresponding devices are initialized, and
>> one callback registers again another device for OSS sequencer with a
>> different id "snd-seq-oss" via snd_seq_device_new() inside the lock.
>> Now it hits the lock-detector but the lock should belong to a
>> different ops object in practice.
>>
>> This nested lock may happen only in two drivers, emu10k1-synth and
>> opl3, and only together with OSS emulation.  Since the OSS emulation
>> layer don't do active registration from itself, no deadlock should
>> happen (in theory -- I may oversee something :)
> 
> ok fair enough
> 
> Jiri, can you test the patch below? (I don't have this hardware)
It's gone in 2.6.17-rc5-mm2.
> 
> The ops structure has complex locking rules, where not all ops are
> equal, some are subordinate on others for some complex sound cards. This
> requires for lockdep checking that each individual reg_mutex is
> considered in separation for its locking rules.
> 
> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
> 
> ---
>  sound/core/seq/seq_device.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6.17-rc4-mm3-lockdep/sound/core/seq/seq_device.c
> ===================================================================
> --- linux-2.6.17-rc4-mm3-lockdep.orig/sound/core/seq/seq_device.c
> +++ linux-2.6.17-rc4-mm3-lockdep/sound/core/seq/seq_device.c
> @@ -46,6 +46,7 @@
>  #include <linux/kmod.h>
>  #include <linux/slab.h>
>  #include <linux/mutex.h>
> +#include <linux/lockdep.h>
>  
>  MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
>  MODULE_DESCRIPTION("ALSA sequencer device management");
> @@ -73,6 +74,8 @@ struct ops_list {
>  	struct mutex reg_mutex;
>  
>  	struct list_head list;	/* next driver */
> +
> +	struct lockdep_type_key reg_mutex_key;
>  };
>  
>  
> @@ -379,7 +382,7 @@ static struct ops_list * create_driver(c
>  
>  	/* set up driver entry */
>  	strlcpy(ops->id, id, sizeof(ops->id));
> -	mutex_init(&ops->reg_mutex);
> +	mutex_init_key(&ops->reg_mutex, id, &ops->reg_mutex_key);
>  	ops->driver = DRIVER_EMPTY;
>  	INIT_LIST_HEAD(&ops->dev_list);
>  	/* lock this instance */
> 
> 

regards,
- --
Jiri Slaby         www.fi.muni.cz/~xslaby
\_.-^-._   jirislaby@gmail.com   _.-^-._/
B67499670407CE62ACC8 22A032CC55C339D47A7E
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFEfwdvMsxVwznUen4RAohGAKCChQYCo4EPEG0CWDPcld15mZnWTwCeKU+2
l26ws9ExkuBo1wlT5nJ+uWg=
=vgxE
-----END PGP SIGNATURE-----

WARNING: multiple messages have this Message-ID (diff)
From: Jiri Slaby <jirislaby@gmail.com>
To: Arjan van de Ven <arjan@linux.intel.com>
Cc: Takashi Iwai <tiwai@suse.de>,
	perex@suse.cz, James@superbug.demon.co.uk,
	emu10k1-devel@lists.sourceforge.net, alsa-devel@alsa-project.org,
	linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>
Subject: Re: BUG: possible deadlock detected! (sound) [Was: 2.6.17-rc5-mm1]
Date: Thu, 01 Jun 2006 17:27:20 +0159	[thread overview]
Message-ID: <447F076F.9020209@gmail.com> (raw)
In-Reply-To: <1148993947.3636.61.camel@laptopd505.fenrus.org>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Arjan van de Ven napsal(a):
> On Tue, 2006-05-30 at 14:44 +0200, Takashi Iwai wrote:
>> This ops is a unique object assigned to a different "id" string.
>>
>> The first snd_seq_device_register_driver() called from emu10k1_synth.c
>> is the registration for the id "snd-synth-emu10k1".
>> Then in init_device(), the corresponding devices are initialized, and
>> one callback registers again another device for OSS sequencer with a
>> different id "snd-seq-oss" via snd_seq_device_new() inside the lock.
>> Now it hits the lock-detector but the lock should belong to a
>> different ops object in practice.
>>
>> This nested lock may happen only in two drivers, emu10k1-synth and
>> opl3, and only together with OSS emulation.  Since the OSS emulation
>> layer don't do active registration from itself, no deadlock should
>> happen (in theory -- I may oversee something :)
> 
> ok fair enough
> 
> Jiri, can you test the patch below? (I don't have this hardware)
It's gone in 2.6.17-rc5-mm2.
> 
> The ops structure has complex locking rules, where not all ops are
> equal, some are subordinate on others for some complex sound cards. This
> requires for lockdep checking that each individual reg_mutex is
> considered in separation for its locking rules.
> 
> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
> 
> ---
>  sound/core/seq/seq_device.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6.17-rc4-mm3-lockdep/sound/core/seq/seq_device.c
> ===================================================================
> --- linux-2.6.17-rc4-mm3-lockdep.orig/sound/core/seq/seq_device.c
> +++ linux-2.6.17-rc4-mm3-lockdep/sound/core/seq/seq_device.c
> @@ -46,6 +46,7 @@
>  #include <linux/kmod.h>
>  #include <linux/slab.h>
>  #include <linux/mutex.h>
> +#include <linux/lockdep.h>
>  
>  MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
>  MODULE_DESCRIPTION("ALSA sequencer device management");
> @@ -73,6 +74,8 @@ struct ops_list {
>  	struct mutex reg_mutex;
>  
>  	struct list_head list;	/* next driver */
> +
> +	struct lockdep_type_key reg_mutex_key;
>  };
>  
>  
> @@ -379,7 +382,7 @@ static struct ops_list * create_driver(c
>  
>  	/* set up driver entry */
>  	strlcpy(ops->id, id, sizeof(ops->id));
> -	mutex_init(&ops->reg_mutex);
> +	mutex_init_key(&ops->reg_mutex, id, &ops->reg_mutex_key);
>  	ops->driver = DRIVER_EMPTY;
>  	INIT_LIST_HEAD(&ops->dev_list);
>  	/* lock this instance */
> 
> 

regards,
- --
Jiri Slaby         www.fi.muni.cz/~xslaby
\_.-^-._   jirislaby@gmail.com   _.-^-._/
B67499670407CE62ACC8 22A032CC55C339D47A7E
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFEfwdvMsxVwznUen4RAohGAKCChQYCo4EPEG0CWDPcld15mZnWTwCeKU+2
l26ws9ExkuBo1wlT5nJ+uWg=
=vgxE
-----END PGP SIGNATURE-----

  parent reply	other threads:[~2006-06-01 15:29 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-30  9:29 2.6.17-rc5-mm1 Andrew Morton
2006-05-30  9:42 ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 10:05 ` [patch, -rc5-mm1] genirq: ia64 build fix Ingo Molnar
2006-05-30 10:09 ` [patch, -rc5-mm1] lock validator, irqtrace: support non-x86 architectures Ingo Molnar
2006-05-30 10:11 ` [patch, -rc5-mm1] lock validator: rwsem build fix for " Ingo Molnar
2006-05-30 10:12 ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 10:48 ` BUG: possible deadlock detected! (sound) [Was: 2.6.17-rc5-mm1] Jiri Slaby
2006-05-30 10:48   ` Jiri Slaby
2006-05-30 11:06   ` Arjan van de Ven
2006-05-30 11:06     ` Arjan van de Ven
2006-05-30 12:44     ` Takashi Iwai
2006-05-30 12:59       ` Arjan van de Ven
2006-05-30 12:59         ` Arjan van de Ven
2006-05-30 13:09         ` Jiri Slaby
2006-05-30 13:09           ` Jiri Slaby
2006-06-01 15:28         ` Jiri Slaby [this message]
2006-06-01 15:28           ` Jiri Slaby
2006-05-30 12:44     ` Takashi Iwai
2006-05-30 11:02 ` BUG: warning at ... (netlink) " Jiri Slaby
2006-05-30 11:55   ` [patch, -rc5-mm1] lock validator: remove softirq.c WARN_ON Ingo Molnar
2006-05-30 16:00     ` Alexey Kuznetsov
2006-05-30 16:05       ` Arjan van de Ven
2006-05-30 16:15         ` Alexey Kuznetsov
2006-05-30 11:11 ` [patch, -rc5-mm1] lock validator, fix NULL type->name bug Ingo Molnar
2006-05-30 11:58   ` Mike Galbraith
2006-05-30 12:02     ` Ingo Molnar
2006-05-30 12:06       ` Mike Galbraith
2006-05-30 12:05     ` Mike Galbraith
2006-05-30 12:06       ` Ingo Molnar
2006-05-30 12:17         ` Mike Galbraith
2006-05-30 12:19           ` Ingo Molnar
2006-05-30 12:28             ` Mike Galbraith
2006-05-30 12:29               ` [patch, -rc5-mm1] lock validator: disable NMI watchdog if CONFIG_LOCKDEP, i386 Ingo Molnar
2006-05-30 12:34                 ` [patch, -rc5-mm1] lock validator: fix NMI-disabling on x86_64 Ingo Molnar
2006-05-30 12:44                 ` [patch, -rc5-mm1] lock validator: disable NMI watchdog if CONFIG_LOCKDEP, i386 Mike Galbraith
2006-05-30 19:14                 ` Andi Kleen
2006-05-30 19:47                   ` Ingo Molnar
2006-05-30 20:05                     ` Ingo Molnar
2006-05-30 19:54                   ` Andrew Morton
2006-05-31  4:34                 ` Keith Owens
2006-05-30 12:14       ` [patch, -rc5-mm1] lock validator, fix NULL type->name bug Arjan van de Ven
2006-05-30 12:46 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 19:13   ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-30 15:59 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 16:08   ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-30 18:51     ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 16:16 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 19:28   ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 19:48     ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 18:39 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 19:04   ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-31 14:56     ` [patch 1/1] selinux: fix sb_lock/sb_security_lock nesting (Was: Re: 2.6.17-rc5-mm1) Stephen Smalley
2006-05-31 15:49       ` James Morris
2006-05-30 19:55   ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-30 20:20     ` 2.6.17-rc5-mm1 Dave Jones
2006-05-30 20:32       ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-30 18:55 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 18:57   ` Fwd: 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 19:42     ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 21:57       ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 22:09         ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:18           ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:26             ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:29               ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:31                 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 22:32                 ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 10:56                 ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:59           ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-30 23:05             ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 23:06               ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 23:49                 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-31  3:08                   ` 2.6.17-rc5-mm1 Steven Rostedt
2006-05-30 19:59     ` Fwd: 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 19:45   ` 2.6.17-rc5-mm1 Andrew Morton
2006-05-31 13:51   ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-31 14:02     ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 14:05       ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 14:12       ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 15:05         ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-31 15:20           ` [patch, -rc5-mm1] lock validator: irqflags-trace entry.S fix Ingo Molnar
2006-05-30 19:43 ` 2.6.17-rc5-mm1 Roland Dreier
2006-05-30 20:26   ` [patch, -rc5-mm1] lock validator: fix RT_HASH_LOCK_SZ Ingo Molnar
2006-05-30 20:43     ` Roland Dreier
2006-05-30 20:49       ` Ingo Molnar
2006-05-30 20:58         ` Roland Dreier
2006-05-30 21:01           ` Arjan van de Ven
2006-05-30 21:03             ` Roland Dreier
2006-05-30 21:14             ` Roland Dreier
2006-05-30 21:55               ` [Patch -rc5-mm1] Lockdep annotate rpc_populate for child-relationship of its mutex Arjan van de Ven
2006-05-30 21:19             ` [combo patch] lock validator -V2 Ingo Molnar
2006-05-30 21:07 ` 2.6.17-rc5-mm1 Brice Goglin
2006-05-30 21:07 ` 2.6.17-rc5-mm1 Laurent Riffard
2006-05-30 21:24   ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-30 21:43     ` 2.6.17-rc5-mm1 Mel Gorman
2006-05-30 21:24 ` 2.6.17-rc5-mm1 Roland Dreier
2006-05-30 22:45   ` 2.6.17-rc5-mm1 Andrew Morton
2006-05-30 22:49     ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:52       ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 22:58         ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 23:05           ` 2.6.17-rc5-mm1 Thomas Gleixner
2006-05-30 23:14             ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-30 23:32               ` 2.6.17-rc5-mm1 Roland Dreier
2006-05-30 23:15             ` 2.6.17-rc5-mm1 Benjamin Herrenschmidt
2006-05-30 23:53               ` 2.6.17-rc5-mm1 Greg KH
2006-05-30 23:53 ` 2.6.17-rc5-mm1 Michal Piotrowski
2006-05-31  3:17 ` 2.6.17-rc5-mm1 Steven Rostedt
2006-05-31  4:14   ` 2.6.17-rc5-mm1 Andrew Morton
2006-05-31  6:31     ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 11:50       ` 2.6.17-rc5-mm1 Steven Rostedt
2006-05-31 11:55         ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31  6:39     ` 2.6.17-rc5-mm1 Arjan van de Ven
2006-05-31 16:48 ` 2.6.17-rc5-mm1 Jesse Brandeburg
2006-05-31 23:08   ` 2.6.17-rc5-mm1 Ingo Molnar
2006-05-31 17:39 ` 2.6.17-rc5-mm1 Laurent Riffard
2006-05-31 18:09   ` 2.6.17-rc5-mm1 Andrew Morton
2006-06-01 22:07   ` 2.6.17-rc5-mm1 Andrew Morton
2006-06-02  7:49     ` 2.6.17-rc5-mm1 Jan Beulich
2006-06-01  1:25 ` 2.6.17-rc5-mm1 Randy.Dunlap
2006-06-01  1:40   ` 2.6.17-rc5-mm1 Siddha, Suresh B
2006-06-01  2:17     ` 2.6.17-rc5-mm1 Randy.Dunlap
2006-06-01  1:43   ` 2.6.17-rc5-mm1 Andrew Morton
2006-06-01  6:14     ` 2.6.17-rc5-mm1 Ingo Molnar
2006-06-01 15:12       ` 2.6.17-rc5-mm1 Randy.Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=447F076F.9020209@gmail.com \
    --to=jirislaby@gmail.com \
    --cc=James@superbug.demon.co.uk \
    --cc=akpm@osdl.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=arjan@linux.intel.com \
    --cc=emu10k1-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@suse.cz \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.