From: Heiko Carstens <[EMAIL PROTECTED]>
qeth: bhs must be disabled when accessing neighbour tables.
=================================
[ INFO: inconsistent lock state ]
---------------------------------
inconsistent {in-softirq-W} -> {softirq-on-W} usage.
modprobe/529 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&tbl->lock){-+..}, at: [<0000000040809384>] qeth_init+0x384/0x4c4 [qeth]
{in-softirq-W} state was registered at:
[<000000000005f356>] lock_acquire+0x8a/0xb0
[<000000000030ff06>] _write_lock+0x52/0x6c
[<000000000024e3ec>] neigh_periodic_timer+0xa8/0x254
[<0000000000046888>] run_timer_softirq+0x1e4/0x278
[<000000000004072c>] __do_softirq+0xb4/0x144
[<000000000001f1b0>] do_softirq+0xec/0xf0
[<0000000000040938>] irq_exit+0x90/0xa8
[<000000000001c1c0>] do_extint+0x100/0x11c
[<000000000001fbf0>] ext_no_vtime+0x1c/0x26
[<00000000004df5ba>] tcp_init+0x10e/0x3c4
irq event stamp: 15707
hardirqs last enabled at (15707): [<000000000030e080>]
__mutex_unlock_slowpath+0x104/0x1b4
hardirqs last disabled at (15706): [<000000000030dfd8>]
__mutex_unlock_slowpath+0x5c/0x1b4
softirqs last enabled at (13036): [<00000000000407a2>] __do_softirq+0x12a/0x144
softirqs last disabled at (13029): [<000000000001f1b0>] do_softirq+0xec/0xf0
other info that might help us debug this:
no locks held by modprobe/529.
stack backtrace:
000000003e38b200 000000003e38fb30 0000000000000002 0000000000000000
000000003e38fbd0 000000003e38fb48 000000003e38fb48 0000000000016744
0000000000000000 0000000000000000 0000000000000000 0000000000000000
000000003e38fb30 000000000000000c 000000003e38fb30 000000003e38fba0
000000000031e9f8 0000000000016744 000000003e38fb30 000000003e38fb80
Call Trace:
([<00000000000166d2>] show_trace+0x166/0x16c)
[<000000000001679e>] show_stack+0xc6/0xf8
[<00000000000167fe>] dump_stack+0x2e/0x3c
[<000000000005cef2>] print_usage_bug+0x26e/0x280
[<000000000005dc50>] mark_lock+0x620/0x6c4
[<000000000005eb8c>] __lock_acquire+0x750/0xe90
[<000000000005f356>] lock_acquire+0x8a/0xb0
[<000000000030ff06>] _write_lock+0x52/0x6c
[<0000000040809384>] qeth_init+0x384/0x4c4 [qeth]
[<0000000000069fe2>] sys_init_module+0xd6/0x2c8
[<000000000001f4a4>] sysc_noemu+0x10/0x16
[<000002000010dc9e>] 0x2000010dc9e
Cc: Arjan van de Ven <[EMAIL PROTECTED]>
Cc: Ingo Molnar <[EMAIL PROTECTED]>
Cc: Frank Pavlic <[EMAIL PROTECTED]>
Signed-off-by: Heiko Carstens <[EMAIL PROTECTED]>
---
drivers/s390/net/qeth_main.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 5fff1f9..e1327b8 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -8510,9 +8510,9 @@ static int
qeth_ipv6_init(void)
{
qeth_old_arp_constructor = arp_tbl.constructor;
- write_lock(&arp_tbl.lock);
+ write_lock_bh(&arp_tbl.lock);
arp_tbl.constructor = qeth_arp_constructor;
- write_unlock(&arp_tbl.lock);
+ write_unlock_bh(&arp_tbl.lock);
arp_direct_ops = (struct neigh_ops*)
kmalloc(sizeof(struct neigh_ops), GFP_KERNEL);
@@ -8528,9 +8528,9 @@ qeth_ipv6_init(void)
static void
qeth_ipv6_uninit(void)
{
- write_lock(&arp_tbl.lock);
+ write_lock_bh(&arp_tbl.lock);
arp_tbl.constructor = qeth_old_arp_constructor;
- write_unlock(&arp_tbl.lock);
+ write_unlock_bh(&arp_tbl.lock);
kfree(arp_direct_ops);
}
#endif /* CONFIG_QETH_IPV6 */
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html