lkml.org 
[lkml]   [2006]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [netfilter-core] BUG: soft lockup detected on CPU#0!
Norbert Wegener wrote:
> Mar 5 12:48:15 nobbi kernel: ip_conntrack version 2.4 (3583 buckets,
> 28664 max) - 232 bytes per conntrack
> Mar 5 12:48:44 nobbi kernel: BUG: soft lockup detected on CPU#0!
> Mar 5 12:48:44 nobbi kernel:
> Mar 5 12:48:44 nobbi kernel: Pid: 12848, comm: rmmod
> Mar 5 12:48:44 nobbi kernel: EIP: 0060:[<c011b230>] CPU: 0
> Mar 5 12:48:44 nobbi kernel: EIP is at local_bh_enable+0x1/0x5c
> Mar 5 12:48:44 nobbi kernel: EFLAGS: 00000202 Not tainted
> (2.6.15.1-default)
> Mar 5 12:48:44 nobbi kernel: EAX: 00000000 EBX: cdcabb10 ECX: c35dbf4c
> EDX: cdcabb10
> Mar 5 12:48:44 nobbi kernel: ESI: c35dbf4c EDI: 00000000 EBP: dd243db0
> DS: 007b ES: 007b
> Mar 5 12:48:44 nobbi kernel: CR0: 8005003b CR2: 0805e30c CR3: 059d5000
> CR4: 000006d0
> Mar 5 12:48:44 nobbi kernel: [<dd243c54>] get_next_corpse+0xc7/0xce
> [ip_conntrack]
> Mar 5 12:48:44 nobbi kernel: [<dd243db0>] kill_all+0x0/0x6 [ip_conntrack]
> Mar 5 12:48:44 nobbi kernel: [<dd243cb5>]
> ip_ct_iterate_cleanup+0x5a/0x66 [ip_conntrack]
> Mar 5 12:48:44 nobbi kernel: [<dd243dea>]
> ip_conntrack_cleanup+0x14/0x65 [ip_conntrack]
> Mar 5 12:48:45 nobbi kernel: [<dd2427e9>] init_or_cleanup+0x24b/0x24f
> [ip_conntrack]
> Mar 5 12:48:45 nobbi kernel: [<c0129642>] sys_delete_module+0x11f/0x14f
> Mar 5 12:48:45 nobbi kernel: [<c0140905>] do_munmap+0xd2/0xe8
> Mar 5 12:48:45 nobbi kernel: [<c01029db>] sysenter_past_esp+0x54/0x79

Can you reproduce the problem (by rmmod'ing ip_conntrack)? If so please
try if this patch helps.
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c
index 84c66db..fd16083 100644
--- a/net/ipv4/netfilter/ip_conntrack_core.c
+++ b/net/ipv4/netfilter/ip_conntrack_core.c
@@ -1251,9 +1251,6 @@ get_next_corpse(int (*iter)(struct ip_co
if (h)
break;
}
- if (!h)
- h = LIST_FIND_W(&unconfirmed, do_iter,
- struct ip_conntrack_tuple_hash *, iter, data);
if (h)
atomic_inc(&tuplehash_to_ctrack(h)->ct_general.use);
write_unlock_bh(&ip_conntrack_lock);
@@ -1267,6 +1264,9 @@ ip_ct_iterate_cleanup(int (*iter)(struct
struct ip_conntrack_tuple_hash *h;
unsigned int bucket = 0;

+ /* make sure there are no unconfirmed conntracks */
+ synchronize_net();
+
while ((h = get_next_corpse(iter, data, &bucket)) != NULL) {
struct ip_conntrack *ct = tuplehash_to_ctrack(h);
/* Time to push up daises... */
\
 
 \ /
  Last update: 2006-03-10 13:06    [W:1.604 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site