mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-26 04:20:23 +09:00
netfilter: nf_tables: don't write table validation state without mutex
[ Upstream commit9a32e98506] The ->cleanup callback needs to be removed, this doesn't work anymore as the transaction mutex is already released in the ->abort function. Just do it after a successful validation pass, this either happens from commit or abort phases where transaction mutex is held. Fixes:f102d66b33("netfilter: nf_tables: use dedicated mutex to guard transactions") Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8913abddad
commit
7a45b4e1c8
@@ -45,7 +45,6 @@ struct nfnetlink_subsystem {
|
||||
int (*commit)(struct net *net, struct sk_buff *skb);
|
||||
int (*abort)(struct net *net, struct sk_buff *skb,
|
||||
enum nfnl_abort_action action);
|
||||
void (*cleanup)(struct net *net);
|
||||
bool (*valid_genid)(struct net *net, u32 genid);
|
||||
};
|
||||
|
||||
|
||||
@@ -8360,6 +8360,8 @@ static int nf_tables_validate(struct net *net)
|
||||
if (nft_table_validate(net, table) < 0)
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
nft_validate_state_update(net, NFT_VALIDATE_SKIP);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -9231,11 +9233,6 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void nf_tables_cleanup(struct net *net)
|
||||
{
|
||||
nft_validate_state_update(net, NFT_VALIDATE_SKIP);
|
||||
}
|
||||
|
||||
static int nf_tables_abort(struct net *net, struct sk_buff *skb,
|
||||
enum nfnl_abort_action action)
|
||||
{
|
||||
@@ -9269,7 +9266,6 @@ static const struct nfnetlink_subsystem nf_tables_subsys = {
|
||||
.cb = nf_tables_cb,
|
||||
.commit = nf_tables_commit,
|
||||
.abort = nf_tables_abort,
|
||||
.cleanup = nf_tables_cleanup,
|
||||
.valid_genid = nf_tables_valid_genid,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
@@ -585,8 +585,6 @@ done:
|
||||
goto replay_abort;
|
||||
}
|
||||
}
|
||||
if (ss->cleanup)
|
||||
ss->cleanup(net);
|
||||
|
||||
nfnl_err_deliver(&err_list, oskb);
|
||||
kfree_skb(skb);
|
||||
|
||||
Reference in New Issue
Block a user