Patrick McHardy wrote: > Mattia Dongili wrote: > >>On Mon, Aug 01, 2005 at 04:27:53PM +0200, Patrick McHardy wrote: >> >> >>>>--- include/linux/netfilter_ipv4/ip_conntrack.h.clean 2005-08-01 15:09:49.000000000 +0200 >>>>+++ include/linux/netfilter_ipv4/ip_conntrack.h 2005-08-01 15:08:52.000000000 +0200 >>>>@@ -298,6 +298,7 @@ static inline struct ip_conntrack * >>>>ip_conntrack_get(const struct sk_buff *skb, enum ip_conntrack_info *ctinfo) >>>>{ >>>> *ctinfo = skb->nfctinfo; >>>>+ nf_conntrack_get(skb->nfct); >>>> return (struct ip_conntrack *)skb->nfct; >>>>} >>> >>>This creates lots of refcnt leaks, which is probably why it makes the >>>underflow go away :) Please try this patch instead. >> >> >>this doesn't fix it actually, see dmesg below: > > > It looks like ip_ct_iterate_cleanup and ip_conntrack_event_cache_init > race against each other with assigning pointers and grabbing/putting the > refcounts if called from different contexts. This should be a fist step towards fixing it. It's probably incomplete (I'm too tired to check it now), but it should fix the problem you're seeing. Could you give it a spin? BTW, ip_ct_iterate_cleanup can only be called from ipt_MASQUERADE when a device goes down. It seems a bit odd that this is happending on boot, is there anything special about your setup? Regards Patrick