]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
netfilter: nf_tables: use timestamp to check for set element timeout
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 12 Aug 2024 10:24:43 +0000 (12:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Aug 2024 03:45:50 +0000 (05:45 +0200)
commit0d40e8cb1d1f56a994cdd2e015af622fdca9ed4d
tree9e64e8bd0bc0733b3445ddf1c977e54fe0d0ec03
parent9526393ed6c79003a1ae8b7844683467959960b4
netfilter: nf_tables: use timestamp to check for set element timeout

commit 7395dfacfff65e9938ac0889dafa1ab01e987d15 upstream

Add a timestamp field at the beginning of the transaction, store it
in the nftables per-netns area.

Update set backend .insert, .deactivate and sync gc path to use the
timestamp, this avoids that an element expires while control plane
transaction is still unfinished.

.lookup and .update, which are used from packet path, still use the
current time to check if the element has expired. And .get path and dump
also since this runs lockless under rcu read size lock. Then, there is
async gc which also needs to check the current time since it runs
asynchronously from a workqueue.

Fixes: c3e1b005ed1c ("netfilter: nf_tables: add set element timeout support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/net/netfilter/nf_tables.h
net/netfilter/nf_tables_api.c
net/netfilter/nft_set_hash.c
net/netfilter/nft_set_pipapo.c
net/netfilter/nft_set_rbtree.c