Re: [netfilter-core] BUG: soft lockup detected on CPU#0!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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... */

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux