]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/netfilter/xt_connbytes.c
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb...
[karo-tx-linux.git] / net / netfilter / xt_connbytes.c
index 9ddf1c3bfb39c5f67cb8f8c24ccdd22d03c38f10..e595e07a759b2df8ccdce5069d1974ec6ccaa754 100644 (file)
@@ -40,46 +40,46 @@ connbytes_mt(const struct sk_buff *skb, struct xt_action_param *par)
        case XT_CONNBYTES_PKTS:
                switch (sinfo->direction) {
                case XT_CONNBYTES_DIR_ORIGINAL:
-                       what = counters[IP_CT_DIR_ORIGINAL].packets;
+                       what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
                        break;
                case XT_CONNBYTES_DIR_REPLY:
-                       what = counters[IP_CT_DIR_REPLY].packets;
+                       what = atomic64_read(&counters[IP_CT_DIR_REPLY].packets);
                        break;
                case XT_CONNBYTES_DIR_BOTH:
-                       what = counters[IP_CT_DIR_ORIGINAL].packets;
-                       what += counters[IP_CT_DIR_REPLY].packets;
+                       what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
+                       what += atomic64_read(&counters[IP_CT_DIR_REPLY].packets);
                        break;
                }
                break;
        case XT_CONNBYTES_BYTES:
                switch (sinfo->direction) {
                case XT_CONNBYTES_DIR_ORIGINAL:
-                       what = counters[IP_CT_DIR_ORIGINAL].bytes;
+                       what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
                        break;
                case XT_CONNBYTES_DIR_REPLY:
-                       what = counters[IP_CT_DIR_REPLY].bytes;
+                       what = atomic64_read(&counters[IP_CT_DIR_REPLY].bytes);
                        break;
                case XT_CONNBYTES_DIR_BOTH:
-                       what = counters[IP_CT_DIR_ORIGINAL].bytes;
-                       what += counters[IP_CT_DIR_REPLY].bytes;
+                       what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
+                       what += atomic64_read(&counters[IP_CT_DIR_REPLY].bytes);
                        break;
                }
                break;
        case XT_CONNBYTES_AVGPKT:
                switch (sinfo->direction) {
                case XT_CONNBYTES_DIR_ORIGINAL:
-                       bytes = counters[IP_CT_DIR_ORIGINAL].bytes;
-                       pkts  = counters[IP_CT_DIR_ORIGINAL].packets;
+                       bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
+                       pkts  = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
                        break;
                case XT_CONNBYTES_DIR_REPLY:
-                       bytes = counters[IP_CT_DIR_REPLY].bytes;
-                       pkts  = counters[IP_CT_DIR_REPLY].packets;
+                       bytes = atomic64_read(&counters[IP_CT_DIR_REPLY].bytes);
+                       pkts  = atomic64_read(&counters[IP_CT_DIR_REPLY].packets);
                        break;
                case XT_CONNBYTES_DIR_BOTH:
-                       bytes = counters[IP_CT_DIR_ORIGINAL].bytes +
-                               counters[IP_CT_DIR_REPLY].bytes;
-                       pkts  = counters[IP_CT_DIR_ORIGINAL].packets +
-                               counters[IP_CT_DIR_REPLY].packets;
+                       bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes) +
+                               atomic64_read(&counters[IP_CT_DIR_REPLY].bytes);
+                       pkts  = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets) +
+                               atomic64_read(&counters[IP_CT_DIR_REPLY].packets);
                        break;
                }
                if (pkts != 0)