linux/include/linux/netfilter
Jozsef Kadlecsik c2dc077d8f netfilter: ipset: fix performance regression in swap operation
commit 97f7cf1cd8 upstream.

The patch "netfilter: ipset: fix race condition between swap/destroy
and kernel side add/del/test", commit 28628fa9 fixes a race condition.
But the synchronize_rcu() added to the swap function unnecessarily slows
it down: it can safely be moved to destroy and use call_rcu() instead.

Eric Dumazet pointed out that simply calling the destroy functions as
rcu callback does not work: sets with timeout use garbage collectors
which need cancelling at destroy which can wait. Therefore the destroy
functions are split into two: cancelling garbage collectors safely at
executing the command received by netlink and moving the remaining
part only into the rcu callback.

Link: https://lore.kernel.org/lkml/C0829B10-EAA6-4809-874E-E1E9C05A8D84@automattic.com/
Fixes: 28628fa952 ("netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test")
Reported-by: Ale Crismani <ale.crismani@automattic.com>
Reported-by: David Wang <00107082@163.com>
Tested-by: David Wang <00107082@163.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-02-23 08:55:14 +01:00
..
ipset netfilter: ipset: fix performance regression in swap operation 2024-02-23 08:55:14 +01:00
nf_conntrack_amanda.h netfilter: add missing includes to a number of header-files. 2019-08-13 12:14:39 +02:00
nf_conntrack_common.h netfilter: conntrack: avoid useless indirection during conntrack destruction 2022-04-27 14:39:01 +02:00
nf_conntrack_dccp.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_ftp.h netfilter: add missing includes to a number of header-files. 2019-08-13 12:14:39 +02:00
nf_conntrack_h323.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_h323_asn1.h netfilter: add missing includes to a number of header-files. 2019-08-13 12:14:39 +02:00
nf_conntrack_h323_types.h netfilter: add include guard to nf_conntrack_h323_types.h 2019-08-19 13:59:57 +02:00
nf_conntrack_irc.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_pptp.h netfilter: nf_conntrack_pptp: fix compilation warning with W=1 build 2020-05-27 13:39:08 +02:00
nf_conntrack_proto_gre.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_sane.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_sctp.h netfilter: handle the connecting collision properly in nf_conntrack_proto_sctp 2023-10-10 21:59:08 +02:00
nf_conntrack_sip.h netfilter: remove "#ifdef __KERNEL__" guards from some headers. 2019-08-13 12:15:28 +02:00
nf_conntrack_snmp.h netfilter: add missing includes to a number of header-files. 2019-08-13 12:14:39 +02:00
nf_conntrack_tcp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nf_conntrack_tftp.h netfilter: add missing includes to a number of header-files. 2019-08-13 12:14:39 +02:00
nf_conntrack_zones_common.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfnetlink.h netfilter: nf_tables: don't write table validation state without mutex 2023-05-11 23:00:30 +09:00
nfnetlink_acct.h netfilter: nfnetlink_acct: remove useless parameter 2018-03-05 23:15:43 +01:00
nfnetlink_osf.h netfilter: nft_osf: Add version option support 2019-04-08 23:27:12 +02:00
x_tables.h netfilter: x_tables: never register tables by default 2021-08-09 10:22:01 +02:00