netfilter: nf_tables_offload: undo updates if transaction fails
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 14 Nov 2019 13:17:28 +0000 (14:17 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 15 Nov 2019 22:44:52 +0000 (23:44 +0100)
commit63b48c73ff567bbab1f940d6e8f3f48607077a13
treeb26776abeb6b8290b9485d0f20f761535969c571
parent23403cd8898dbc9808d3eb2f63bc1db8a340b751
netfilter: nf_tables_offload: undo updates if transaction fails

The nft_flow_rule_offload_commit() function might fail after several
successful commands, thus, leaving the hardware filtering policy in
inconsistent state.

This patch adds nft_flow_rule_offload_abort() function which undoes the
updates that have been already processed if one command in this
transaction fails. Hence, the hardware ruleset is left as it was before
this aborted transaction.

The deletion path needs to create the flow_rule object too, in case that
an existing rule needs to be re-added from the abort path.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c
net/netfilter/nf_tables_offload.c