Re: still having smp/snat problems (Re: Linux 2.4.19-rc3)

From: Martin Josefsson (gandalf@wlug.westbo.se)
Date: Sat Jul 20 2002 - 04:51:54 EST


On Sat, 2002-07-20 at 06:17, glynis@butterfly.hjsoft.com wrote:
> On Fri, Jul 19, 2002 at 09:20:49PM -0300, Marcelo Tosatti wrote:
> > <rusty@rustcorp.com.au> (02/07/17 1.630)
> > [PATCH] The real netfilter conntrack SMP overrun fix
>
> assuming this should have fixed this:
> LIST_DELETE: ip_conntrack_core.c:165
> `&ct->tuplehash[IP_CT_DIR_REPLY]'(dd8f2e90) not in &ip_conntrack_hash
> [hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple)].
>
> it doesn't seem to have taken. i see this error and the following
> crash when i use these rules:
> iptables -t nat -A POSTROUTING -j SNAT --to 64.192.31.41
> iptables -t nat -A POSTROUTING -j SNAT --to 192.168.1.1
> iptables -t nat -A POSTROUTING -j SNAT --to 127.0.0.1
>
> when i use the masquerading instead of snat, it doesn't exhibit the
> error and crash.
>
> here's the info for my _stable_ config on my dual athlon 1800+:

Hmm, this is something people have reported a long time but we've never
been able to reproduce it. People have even reported it on UP machines
(maybe they were running with preempt?).
Rusty has been over the locking in conntrack a few times without finding
anything that could explain it.

Could you please apply the attached patch and give it a go and send the
results to netfilter-devel@lists.netfilter.org ?
(I hope it applies, was diffed against my quite patched kernel)

-- 
/Martin

Never argue with an idiot. They drag you down to their level, then beat you with experience.

--- linux/include/linux/netfilter_ipv4/listhelp.h.orig Sat Jul 20 11:46:47 2002 +++ linux/include/linux/netfilter_ipv4/listhelp.h Sat Jul 20 11:48:17 2002 @@ -54,9 +54,11 @@ #define LIST_DELETE(head, oldentry) \ do { \ ASSERT_WRITE_LOCK(head); \ - if (!list_inlist(head, oldentry)) \ + if (!list_inlist(head, oldentry)) { \ printk("LIST_DELETE: %s:%u `%s'(%p) not in %s.\n", \ __FILE__, __LINE__, #oldentry, oldentry, #head); \ + BUG(); \ + } \ else list_del((struct list_head *)oldentry); \ } while(0) #else

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jul 23 2002 - 22:00:33 EST