Commit 1bc83a01 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso

netfilter: nf_tables: discard table flag update with pending basechain deletion

Hook unregistration is deferred to the commit phase, same occurs with
hook updates triggered by the table dormant flag. When both commands are
combined, this results in deleting a basechain while leaving its hook
still registered in the core.

Fixes: 179d9ba5 ("netfilter: nf_tables: fix table flag updates")
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 24225011
...@@ -1209,10 +1209,11 @@ static bool nft_table_pending_update(const struct nft_ctx *ctx) ...@@ -1209,10 +1209,11 @@ static bool nft_table_pending_update(const struct nft_ctx *ctx)
return true; return true;
list_for_each_entry(trans, &nft_net->commit_list, list) { list_for_each_entry(trans, &nft_net->commit_list, list) {
if ((trans->msg_type == NFT_MSG_NEWCHAIN || if (trans->ctx.table == ctx->table &&
trans->msg_type == NFT_MSG_DELCHAIN) && ((trans->msg_type == NFT_MSG_NEWCHAIN &&
trans->ctx.table == ctx->table && nft_trans_chain_update(trans)) ||
nft_trans_chain_update(trans)) (trans->msg_type == NFT_MSG_DELCHAIN &&
nft_is_base_chain(trans->ctx.chain))))
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment