netfilter: nf_tables: add nft_dereference() macro
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
0eb5db7ad3
commit
67a8fc27cc
2 changed files with 5 additions and 2 deletions
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include <linux/netfilter/nfnetlink.h>
|
||||||
#include <linux/netfilter/x_tables.h>
|
#include <linux/netfilter/x_tables.h>
|
||||||
#include <linux/netfilter/nf_tables.h>
|
#include <linux/netfilter/nf_tables.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
@ -521,6 +522,9 @@ void nft_unregister_chain_type(const struct nf_chain_type *);
|
||||||
int nft_register_expr(struct nft_expr_type *);
|
int nft_register_expr(struct nft_expr_type *);
|
||||||
void nft_unregister_expr(struct nft_expr_type *);
|
void nft_unregister_expr(struct nft_expr_type *);
|
||||||
|
|
||||||
|
#define nft_dereference(p) \
|
||||||
|
nfnl_dereference(p, NFNL_SUBSYS_NFTABLES)
|
||||||
|
|
||||||
#define MODULE_ALIAS_NFT_FAMILY(family) \
|
#define MODULE_ALIAS_NFT_FAMILY(family) \
|
||||||
MODULE_ALIAS("nft-afinfo-" __stringify(family))
|
MODULE_ALIAS("nft-afinfo-" __stringify(family))
|
||||||
|
|
||||||
|
|
|
@ -794,9 +794,8 @@ nf_tables_counters(struct nft_base_chain *chain, const struct nlattr *attr)
|
||||||
stats->pkts = be64_to_cpu(nla_get_be64(tb[NFTA_COUNTER_PACKETS]));
|
stats->pkts = be64_to_cpu(nla_get_be64(tb[NFTA_COUNTER_PACKETS]));
|
||||||
|
|
||||||
if (chain->stats) {
|
if (chain->stats) {
|
||||||
/* nfnl_lock is held, add some nfnl function for this, later */
|
|
||||||
struct nft_stats __percpu *oldstats =
|
struct nft_stats __percpu *oldstats =
|
||||||
rcu_dereference_protected(chain->stats, 1);
|
nft_dereference(chain->stats);
|
||||||
|
|
||||||
rcu_assign_pointer(chain->stats, newstats);
|
rcu_assign_pointer(chain->stats, newstats);
|
||||||
synchronize_rcu();
|
synchronize_rcu();
|
||||||
|
|
Loading…
Add table
Reference in a new issue