summaryrefslogtreecommitdiffstats
path: root/include/net/netfilter/nf_tables.h
diff options
context:
space:
mode:
authorEric Dumazet2014-07-09 15:14:06 +0200
committerPablo Neira Ayuso2014-07-14 12:00:17 +0200
commitce355e209feb030945dae4c358c02f29a84f3f8b (patch)
treeedf8561e59627f889581be27fc80c86820c2988e /include/net/netfilter/nf_tables.h
parentnetfilter: nf_tables: set NLM_F_DUMP_INTR if netlink dumping is stale (diff)
downloadkernel-qcow2-linux-ce355e209feb030945dae4c358c02f29a84f3f8b.tar.gz
kernel-qcow2-linux-ce355e209feb030945dae4c358c02f29a84f3f8b.tar.xz
kernel-qcow2-linux-ce355e209feb030945dae4c358c02f29a84f3f8b.zip
netfilter: nf_tables: 64bit stats need some extra synchronization
Use generic u64_stats_sync infrastructure to get proper 64bit stats, even on 32bit arches, at no extra cost for 64bit arches. Without this fix, 32bit arches can have some wrong counters at the time the carry is propagated into upper word. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/net/netfilter/nf_tables.h')
-rw-r--r--include/net/netfilter/nf_tables.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index 713b0b88bd5a..c4d86198d3d6 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -6,6 +6,7 @@
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter/nf_tables.h>
+#include <linux/u64_stats_sync.h>
#include <net/netlink.h>
#define NFT_JUMP_STACK_SIZE 16
@@ -528,8 +529,9 @@ enum nft_chain_type {
};
struct nft_stats {
- u64 bytes;
- u64 pkts;
+ u64 bytes;
+ u64 pkts;
+ struct u64_stats_sync syncp;
};
#define NFT_HOOK_OPS_MAX 2