Skip to content

Commit

Permalink
netfilter: nfnetlink: pass down netns pointer to commit() and abort()…
Browse files Browse the repository at this point in the history
… callbacks

Adapt callsites to avoid recurrent lookup of the netns pointer.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Pablo Neira Ayuso committed Dec 28, 2015
1 parent 7b8002a commit 5913bea
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 9 deletions.
4 changes: 2 additions & 2 deletions include/linux/netfilter/nfnetlink.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ struct nfnetlink_subsystem {
__u8 subsys_id; /* nfnetlink subsystem ID */
__u8 cb_count; /* number of callbacks */
const struct nfnl_callback *cb; /* callback for individual types */
int (*commit)(struct sk_buff *skb);
int (*abort)(struct sk_buff *skb);
int (*commit)(struct net *net, struct sk_buff *skb);
int (*abort)(struct net *net, struct sk_buff *skb);
};

int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);
Expand Down
6 changes: 2 additions & 4 deletions net/netfilter/nf_tables_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -3865,9 +3865,8 @@ static void nf_tables_commit_release(struct nft_trans *trans)
kfree(trans);
}

static int nf_tables_commit(struct sk_buff *skb)
static int nf_tables_commit(struct net *net, struct sk_buff *skb)
{
struct net *net = sock_net(skb->sk);
struct nft_trans *trans, *next;
struct nft_trans_elem *te;

Expand Down Expand Up @@ -4002,9 +4001,8 @@ static void nf_tables_abort_release(struct nft_trans *trans)
kfree(trans);
}

static int nf_tables_abort(struct sk_buff *skb)
static int nf_tables_abort(struct net *net, struct sk_buff *skb)
{
struct net *net = sock_net(skb->sk);
struct nft_trans *trans, *next;
struct nft_trans_elem *te;

Expand Down
6 changes: 3 additions & 3 deletions net/netfilter/nfnetlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -425,15 +425,15 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
}
done:
if (status & NFNL_BATCH_REPLAY) {
ss->abort(oskb);
ss->abort(net, oskb);
nfnl_err_reset(&err_list);
nfnl_unlock(subsys_id);
kfree_skb(skb);
goto replay;
} else if (status == NFNL_BATCH_DONE) {
ss->commit(oskb);
ss->commit(net, oskb);
} else {
ss->abort(oskb);
ss->abort(net, oskb);
}

nfnl_err_deliver(&err_list, oskb);
Expand Down

0 comments on commit 5913bea

Please sign in to comment.