From: Rusty Russell ip_conntrack_put can be called in any context in theory: in particular, MASQUERADE will can call it (via ip_ct_selective_cleanup) when an interface comes up with a different address. Move the CONNTRACK_STAT_INC inside the lock: it needs preemption disabled. Signed-off-by: Rusty Russell Signed-off-by: Andrew Morton --- 25-akpm/net/ipv4/netfilter/ip_conntrack_core.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN net/ipv4/netfilter/ip_conntrack_core.c~avoid-warning-on-conntrack_stat_inc-in-destroy_conntrack net/ipv4/netfilter/ip_conntrack_core.c --- 25/net/ipv4/netfilter/ip_conntrack_core.c~avoid-warning-on-conntrack_stat_inc-in-destroy_conntrack 2004-10-26 19:57:13.474112576 -0700 +++ 25-akpm/net/ipv4/netfilter/ip_conntrack_core.c 2004-10-26 19:57:13.478111968 -0700 @@ -312,6 +312,7 @@ destroy_conntrack(struct nf_conntrack *n } kmem_cache_free(ip_conntrack_expect_cachep, ct->master); } + CONNTRACK_STAT_INC(delete); WRITE_UNLOCK(&ip_conntrack_lock); if (master) @@ -320,7 +321,6 @@ destroy_conntrack(struct nf_conntrack *n DEBUGP("destroy_conntrack: returning ct=%p to slab\n", ct); kmem_cache_free(ip_conntrack_cachep, ct); atomic_dec(&ip_conntrack_count); - CONNTRACK_STAT_INC(delete); } static void death_by_timeout(unsigned long ul_conntrack) _