]> git.itanic.dy.fi Git - linux-stable/commit
netfilter: nf_tables: validate all pending tables
authorFlorian Westphal <fw@strlen.de>
Thu, 17 Aug 2023 18:28:32 +0000 (20:28 +0200)
committerFlorian Westphal <fw@strlen.de>
Wed, 23 Aug 2023 14:10:01 +0000 (16:10 +0200)
commit4b80ced971b0d118f9a11dd503a5833a5016de92
tree9f5e5c55aaf8e3dcf19eed0e1acc88325edcceb8
parentbfedba3b2c7793ce127680bc8f70711e05ec7a17
netfilter: nf_tables: validate all pending tables

We have to validate all tables in the transaction that are in
VALIDATE_DO state, the blamed commit below did not move the break
statement to its right location so we only validate one table.

Moreover, we can't init table->validate to _SKIP when a table object
is allocated.

If we do, then if a transcaction creates a new table and then
fails the transaction, nfnetlink will loop and nft will hang until
user cancels the command.

Add back the pernet state as a place to stash the last state encountered.
This is either _DO (we hit an error during commit validation) or _SKIP
(transaction passed all checks).

Fixes: 00c320f9b755 ("netfilter: nf_tables: make validation state per table")
Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/net/netfilter/nf_tables.h
net/netfilter/nf_tables_api.c