]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
netfilter: nf_tables: reset table validation state on abort
authorFlorian Westphal <fw@strlen.de>
Fri, 28 Nov 2025 11:26:54 +0000 (12:26 +0100)
committerFlorian Westphal <fw@strlen.de>
Tue, 20 Jan 2026 15:23:37 +0000 (16:23 +0100)
commit6f93616a7323d646d18db9c09f147e453b40fdd7
treecafe3ca87ea37ee47dbf0451942a361b1337dece
parent77b9c4a438fc66e2ab004c411056b3fb71a54f2c
netfilter: nf_tables: reset table validation state on abort

If a transaction fails the final validation in the commit hook, the table
validation state is changed to NFT_VALIDATE_DO and a replay of the batch is
performed.  Every rule insert will then do a graph validation.

This is much slower, but provides better error reporting to the user
because we can point at the rule that introduces the validation issue.

Without this reset the affected table(s) remain in full validation mode,
i.e. on next transaction we start with slow-mode.

This makes the next transaction after a failed incremental update very slow:

 # time iptables-restore < /tmp/ruleset
 real    0m0.496s [..]
 # time iptables -A CALLEE -j CALLER
 iptables v1.8.11 (nf_tables):  RULE_APPEND failed (Too many links): rule in chain CALLEE
 real    0m0.022s [..]
 # time iptables-restore < /tmp/ruleset
 real    1m22.355s [..]

After this patch, 2nd iptables-restore is back to ~0.5s.

Fixes: 9a32e9850686 ("netfilter: nf_tables: don't write table validation state without mutex")
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/nf_tables_api.c