netdev
[Top] [All Lists]

[patch 9/9] Avoid warning on CONNTRACK_STAT_INC in destroy_conntrack()

To: davem@xxxxxxxxxx
Subject: [patch 9/9] Avoid warning on CONNTRACK_STAT_INC in destroy_conntrack()
From: akpm@xxxxxxxx
Date: Thu, 28 Oct 2004 00:19:48 -0700
Cc: jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxx, akpm@xxxxxxxx, rusty@xxxxxxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
From: Rusty Russell <rusty@xxxxxxxxxxxxxxx>

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 <rusty@xxxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 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-28 00:17:08.778469456 -0700
+++ 25-akpm/net/ipv4/netfilter/ip_conntrack_core.c      2004-10-28 
00:17:08.782468848 -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)
_

<Prev in Thread] Current Thread [Next in Thread>