netfilter: nf_nat: don't use atomic bit operation
authorChangli Gao <xiaosuo@gmail.com>
Mon, 15 Nov 2010 10:59:03 +0000 (11:59 +0100)
committerPatrick McHardy <kaber@trash.net>
Mon, 15 Nov 2010 10:59:03 +0000 (11:59 +0100)
As we own the conntrack and the others can't see it until we confirm it,
we don't need to use atomic bit operation on ct->status.

Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
include/net/netfilter/nf_nat_core.h
net/ipv4/netfilter/nf_nat_core.c

index 33602ab66190c20e8de7cb70d284bae9f9d92e59..5aec85c29979ff636a30ac095c6e11bccccdd1c4 100644 (file)
@@ -21,9 +21,9 @@ static inline int nf_nat_initialized(struct nf_conn *ct,
                                     enum nf_nat_manip_type manip)
 {
        if (manip == IP_NAT_MANIP_SRC)
-               return test_bit(IPS_SRC_NAT_DONE_BIT, &ct->status);
+               return ct->status & IPS_SRC_NAT_DONE_BIT;
        else
-               return test_bit(IPS_DST_NAT_DONE_BIT, &ct->status);
+               return ct->status & IPS_DST_NAT_DONE_BIT;
 }
 
 struct nlattr;
index c04787ce1a71203e1346830450b0a130e358defc..ab877acb22a1e7f040489d74b748dce77da00e72 100644 (file)
@@ -323,9 +323,9 @@ nf_nat_setup_info(struct nf_conn *ct,
 
        /* It's done. */
        if (maniptype == IP_NAT_MANIP_DST)
-               set_bit(IPS_DST_NAT_DONE_BIT, &ct->status);
+               ct->status |= IPS_DST_NAT_DONE_BIT;
        else
-               set_bit(IPS_SRC_NAT_DONE_BIT, &ct->status);
+               ct->status |= IPS_SRC_NAT_DONE_BIT;
 
        return NF_ACCEPT;
 }