linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
@ 2006-07-02  1:04 Miles Lane
  2006-07-02 13:29 ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Miles Lane @ 2006-07-02  1:04 UTC (permalink / raw)
  To: Andrew Morton, LKML

I have patches for hostap, pcmcia and lockdep applied to this kernel.
These patches are the ones resulting from several recent message
threads.
I just noticed this in my kernel log:

[ INFO: possible recursive locking detected ]
---------------------------------------------
multiload-apple/2820 is trying to acquire lock:
 (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>]
sock_def_readable+0x15/0x69

but task is already holding lock:
 (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>]
sock_def_readable+0x15/0x69

other info that might help us debug this:
3 locks held by multiload-apple/2820:
 #0:  (rtnl_mutex){--..}, at: [<c120028e>] mutex_lock+0x1c/0x1f
 #1:  (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>]
sock_def_readable+0x15/0x69
 #2:  (&priv->lock){.+..}, at: [<f90472c9>]
ipw_irq_tasklet+0x54/0x10c1 [ipw2200]

stack backtrace:
 [<c1003502>] show_trace_log_lvl+0x54/0xfd
 [<c1003b6a>] show_trace+0xd/0x10
 [<c1003c0e>] dump_stack+0x19/0x1b
 [<c102ccd6>] __lock_acquire+0x755/0x970
 [<c102d1b6>] lock_acquire+0x60/0x80
 [<c1201533>] _read_lock+0x23/0x32
 [<c119d8db>] sock_def_readable+0x15/0x69
 [<c11b5621>] netlink_broadcast+0x1c6/0x2b8
 [<c11ad712>] wireless_send_event+0x28a/0x29c
 [<f9047d02>] ipw_irq_tasklet+0xa8d/0x10c1 [ipw2200]
 [<c101a4e7>] tasklet_action+0x45/0x76
 [<c101a709>] __do_softirq+0x55/0xb0
 [<c1004a64>] do_softirq+0x58/0xbd
 [<c101a6a8>] irq_exit+0x3f/0x4b
 [<c1004b89>] do_IRQ+0xc0/0xcf
 [<c1002fd9>] common_interrupt+0x25/0x2c

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
  2006-07-02  1:04 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69 Miles Lane
@ 2006-07-02 13:29 ` Ingo Molnar
  2006-07-02 13:34   ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2006-07-02 13:29 UTC (permalink / raw)
  To: Miles Lane; +Cc: Andrew Morton, LKML

[-- Attachment #1: Type: text/plain, Size: 1819 bytes --]


* Miles Lane <miles.lane@gmail.com> wrote:

> I have patches for hostap, pcmcia and lockdep applied to this kernel. 
> These patches are the ones resulting from several recent message 
> threads. I just noticed this in my kernel log:
> 
> [ INFO: possible recursive locking detected ]
> ---------------------------------------------

ok, lockdep should allow same-class read-lock recursion too, because 
it's used by real code and is being relied upon. Could you try the patch 
below? (if you have CONFIG_DEBUG_LOCKING_API_SELFTESTS enabled then 
apply the other attached patch as well, to fix two testcases.)

        Ingo

---------------->
Subject: lockdep: allow read_lock() recursion of same class
From: Ingo Molnar <mingo@elte.hu>

lockdep so far only allowed read-recursion for the same lock
instance. This is enough in the overwhelming majority of cases,
but a hostap case triggered and reported by Miles Lane relies
on same-class different-instance recursion. So we relax the
restriction on read-lock recursion.

(this change does not allow rwsem read-recursion, which is
 still forbidden.)

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 kernel/lockdep.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Index: linux/kernel/lockdep.c
===================================================================
--- linux.orig/kernel/lockdep.c
+++ linux/kernel/lockdep.c
@@ -843,10 +843,9 @@ check_deadlock(struct task_struct *curr,
 			continue;
 		/*
 		 * Allow read-after-read recursion of the same
-		 * lock instance (i.e. read_lock(lock)+read_lock(lock)):
+		 * lock class (i.e. read_lock(lock)+read_lock(lock)):
 		 */
-		if ((read == 2) && prev->read &&
-				(prev->instance == next_instance))
+		if ((read == 2) && prev->read)
 			return 2;
 		return print_deadlock_bug(curr, prev, next);
 	}

[-- Attachment #2: lockdep-locking-api-self-tests-read-recursion-update.patch --]
[-- Type: text/plain, Size: 1596 bytes --]

Subject: lockdep: locking API self-tests, read-recursion update
From: Ingo Molnar <mingo@elte.hu>

lockdep now allows same type (different instance) rwlock recursion
too, update the testcases accordingly.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 lib/locking-selftest.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: linux/lib/locking-selftest.c
===================================================================
--- linux.orig/lib/locking-selftest.c
+++ linux/lib/locking-selftest.c
@@ -248,7 +248,7 @@ GENERATE_TESTCASE(AA_rsem)
 
 /*
  * Special-case for read-locking, they are
- * allowed to recurse on the same lock instance:
+ * allowed to recurse on the same lock class:
  */
 static void rlock_AA1(void)
 {
@@ -259,7 +259,7 @@ static void rlock_AA1(void)
 static void rlock_AA1B(void)
 {
 	RL(X1);
-	RL(X2); // this one should fail
+	RL(X2); // this one should NOT fail
 }
 
 static void rsem_AA1(void)
@@ -1132,7 +1132,7 @@ void locking_selftest(void)
 	init_shared_classes();
 	debug_locks_silent = !debug_locks_verbose;
 
-	DO_TESTCASE_6("A-A deadlock", AA);
+	DO_TESTCASE_6R("A-A deadlock", AA);
 	DO_TESTCASE_6R("A-B-B-A deadlock", ABBA);
 	DO_TESTCASE_6R("A-B-B-C-C-A deadlock", ABBCCA);
 	DO_TESTCASE_6R("A-B-C-A-B-C deadlock", ABCABC);
@@ -1153,7 +1153,7 @@ void locking_selftest(void)
 
 	print_testname("recursive read-lock #2");
 	printk("             |");
-	dotest(rlock_AA1B, FAILURE, LOCKTYPE_RWLOCK);
+	dotest(rlock_AA1B, SUCCESS, LOCKTYPE_RWLOCK);
 	printk("             |");
 	dotest(rsem_AA1B, FAILURE, LOCKTYPE_RWSEM);
 	printk("\n");

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
  2006-07-02 13:29 ` Ingo Molnar
@ 2006-07-02 13:34   ` Ingo Molnar
  2006-07-03  6:08     ` Miles Lane
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2006-07-02 13:34 UTC (permalink / raw)
  To: Miles Lane; +Cc: Andrew Morton, LKML, Arjan van de Ven


* Ingo Molnar <mingo@elte.hu> wrote:

> * Miles Lane <miles.lane@gmail.com> wrote:
> 
> > I have patches for hostap, pcmcia and lockdep applied to this kernel. 
> > These patches are the ones resulting from several recent message 
> > threads. I just noticed this in my kernel log:
> > 
> > [ INFO: possible recursive locking detected ]
> > ---------------------------------------------
> 
> ok, lockdep should allow same-class read-lock recursion too, because 
> it's used by real code and is being relied upon. Could you try the patch 
> below? [...]

the patches are also included in the latest -mm5 combo patch at:

  http://redhat.com/~mingo/lockdep-patches/lockdep-combo-2.6.17-mm5.patch

	Ingo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
  2006-07-02 13:34   ` Ingo Molnar
@ 2006-07-03  6:08     ` Miles Lane
  2006-07-03  6:10       ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Miles Lane @ 2006-07-03  6:08 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrew Morton, LKML, Arjan van de Ven

On 7/2/06, Ingo Molnar <mingo@elte.hu> wrote:
>
> * Ingo Molnar <mingo@elte.hu> wrote:
>
> > * Miles Lane <miles.lane@gmail.com> wrote:
> >
> > > I have patches for hostap, pcmcia and lockdep applied to this kernel.
> > > These patches are the ones resulting from several recent message
> > > threads. I just noticed this in my kernel log:
> > >
> > > [ INFO: possible recursive locking detected ]
> > > ---------------------------------------------
> >
> > ok, lockdep should allow same-class read-lock recursion too, because
> > it's used by real code and is being relied upon. Could you try the patch
> > below? [...]
>
> the patches are also included in the latest -mm5 combo patch at:
>
>   http://redhat.com/~mingo/lockdep-patches/lockdep-combo-2.6.17-mm5.patch

I have not seen this particular INFO message show up again.
Therefore, I haven't tested your latest patch yet.  I wanted to determine
whether this problem would occur often.  If you like I can go ahead and
test the patch anyhow.  I am currently testing mm5 + the pcmcia patch and
the hostap patch.  I am looking into a crashing (system lockup) bug that is
triggered by removing my Linksys USB 10/100 Ethernet adapter.  This
problem is 100% repeatable.  I am working on setting up a remote
debugging configuration.

Would you like me to go ahead and test your latest patch?

Thanks,
            Miles

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
  2006-07-03  6:08     ` Miles Lane
@ 2006-07-03  6:10       ` Ingo Molnar
  2006-07-05  7:56         ` Miles Lane
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2006-07-03  6:10 UTC (permalink / raw)
  To: Miles Lane; +Cc: Andrew Morton, LKML, Arjan van de Ven


* Miles Lane <miles.lane@gmail.com> wrote:

> >> ok, lockdep should allow same-class read-lock recursion too, because
> >> it's used by real code and is being relied upon. Could you try the patch
> >> below? [...]
> >
> >the patches are also included in the latest -mm5 combo patch at:
> >
> >  http://redhat.com/~mingo/lockdep-patches/lockdep-combo-2.6.17-mm5.patch
> 
> I have not seen this particular INFO message show up again.

you know that the validator produces only one message per bootup, right? 
So unless you rebooted meanwhile, not seeing more messages after the 
first one is normal.

> Therefore, I haven't tested your latest patch yet.  I wanted to 
> determine whether this problem would occur often.  If you like I can 
> go ahead and test the patch anyhow.  I am currently testing mm5 + the 
> pcmcia patch and the hostap patch.  I am looking into a crashing 
> (system lockup) bug that is triggered by removing my Linksys USB 
> 10/100 Ethernet adapter.  This problem is 100% repeatable.  I am 
> working on setting up a remote debugging configuration.
> 
> Would you like me to go ahead and test your latest patch?

no hurries - just pick it up whenever you go to a new kernel.

	Ingo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69
  2006-07-03  6:10       ` Ingo Molnar
@ 2006-07-05  7:56         ` Miles Lane
  0 siblings, 0 replies; 6+ messages in thread
From: Miles Lane @ 2006-07-05  7:56 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrew Morton, LKML, Arjan van de Ven

On 7/2/06, Ingo Molnar <mingo@elte.hu> wrote:
>
> * Miles Lane <miles.lane@gmail.com> wrote:
>
> > >> ok, lockdep should allow same-class read-lock recursion too, because
> > >> it's used by real code and is being relied upon. Could you try the patch
> > >> below? [...]
> > >
> > >the patches are also included in the latest -mm5 combo patch at:
> > >
> > >  http://redhat.com/~mingo/lockdep-patches/lockdep-combo-2.6.17-mm5.patch
> >
> > I have not seen this particular INFO message show up again.
>
> you know that the validator produces only one message per bootup, right?
> So unless you rebooted meanwhile, not seeing more messages after the
> first one is normal.
>
> > Therefore, I haven't tested your latest patch yet.  I wanted to
> > determine whether this problem would occur often.  If you like I can
> > go ahead and test the patch anyhow.  I am currently testing mm5 + the
> > pcmcia patch and the hostap patch.  I am looking into a crashing
> > (system lockup) bug that is triggered by removing my Linksys USB
> > 10/100 Ethernet adapter.  This problem is 100% repeatable.  I am
> > working on setting up a remote debugging configuration.
> >
> > Would you like me to go ahead and test your latest patch?
>
> no hurries - just pick it up whenever you go to a new kernel.

Looks good here.  Thanks!

           Miles

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-07-05  7:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-02  1:04 2.6.17-mm4 + hostap + pcmcia + lockdep -- possible recursive locking detected -- (af_callback_keys + sk->sk_family#3){-.-?}, at: [<c119d8db>] sock_def_readable+0x15/0x69 Miles Lane
2006-07-02 13:29 ` Ingo Molnar
2006-07-02 13:34   ` Ingo Molnar
2006-07-03  6:08     ` Miles Lane
2006-07-03  6:10       ` Ingo Molnar
2006-07-05  7:56         ` Miles Lane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).