Skip to content

Commit 30de344

Browse files
committed
netfilter: nf_tables: disable toggling dormant table state more than once
JIRA: https://issues.redhat.com/browse/RHEL-1720 JIRA: https://issues.redhat.com/browse/RHEL-1721 Upstream Status: commit c9bd265 commit c9bd265 Author: Florian Westphal <[email protected]> Date: Fri Sep 15 15:18:11 2023 +0200 netfilter: nf_tables: disable toggling dormant table state more than once nft -f -<<EOF add table ip t add table ip t { flags dormant; } add chain ip t c { type filter hook input priority 0; } add table ip t EOF Triggers a splat from nf core on next table delete because we lose track of right hook register state: WARNING: CPU: 2 PID: 1597 at net/netfilter/core.c:501 __nf_unregister_net_hook RIP: 0010:__nf_unregister_net_hook+0x41b/0x570 nf_unregister_net_hook+0xb4/0xf0 __nf_tables_unregister_hook+0x160/0x1d0 [..] The above should have table in *active* state, but in fact no hooks were registered. Reject on/off/on games rather than attempting to fix this. Fixes: 179d9ba ("netfilter: nf_tables: fix table flag updates") Reported-by: "Lee, Cherie-Anne" <[email protected]> Cc: Bing-Jhong Billy Jheng <[email protected]> Cc: [email protected] Signed-off-by: Florian Westphal <[email protected]> Signed-off-by: Florian Westphal <[email protected]>
1 parent 59ae9e4 commit 30de344

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

net/netfilter/nf_tables_api.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,6 +1159,10 @@ static int nf_tables_updtable(struct nft_ctx *ctx)
11591159
flags & NFT_TABLE_F_OWNER))
11601160
return -EOPNOTSUPP;
11611161

1162+
/* No dormant off/on/off/on games in single transaction */
1163+
if (ctx->table->flags & __NFT_TABLE_F_UPDATE)
1164+
return -EINVAL;
1165+
11621166
trans = nft_trans_alloc(ctx, NFT_MSG_NEWTABLE,
11631167
sizeof(struct nft_trans_table));
11641168
if (trans == NULL)

0 commit comments

Comments
 (0)