linux-stable/net
Jozsef Kadlecsik 24a828f5a5 netfilter: ipset: Rework long task execution when adding/deleting entries
[ Upstream commit 5e29dc36bd ]

When adding/deleting large number of elements in one step in ipset, it can
take a reasonable amount of time and can result in soft lockup errors. The
patch 5f7b51bf09 ("netfilter: ipset: Limit the maximal range of
consecutive elements to add/delete") tried to fix it by limiting the max
elements to process at all. However it was not enough, it is still possible
that we get hung tasks. Lowering the limit is not reasonable, so the
approach in this patch is as follows: rely on the method used at resizing
sets and save the state when we reach a smaller internal batch limit,
unlock/lock and proceed from the saved state. Thus we can avoid long
continuous tasks and at the same time removed the limit to add/delete large
number of elements in one step.

The nfnl mutex is held during the whole operation which prevents one to
issue other ipset commands in parallel.

Fixes: 5f7b51bf09 ("netfilter: ipset: Limit the maximal range of consecutive elements to add/delete")
Reported-by: syzbot+9204e7399656300bf271@syzkaller.appspotmail.com
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-01-12 12:00:39 +01:00
..
6lowpan
9p 9p: set req refcount to zero to avoid uninitialized usage 2022-12-31 13:26:52 +01:00
802 mrp: introduce active flags to prevent UAF when applicant uninit 2022-12-31 13:26:45 +01:00
8021q net: Remove the obsolte u64_stats_fetch_*_irq() users (net). 2022-12-31 13:26:12 +01:00
appletalk
atm net/atm: fix proc_mpc_write incorrect return value 2022-10-29 10:08:32 +02:00
ax25 net: avoid overflow when rose /proc displays timer information. 2022-08-05 19:00:02 -07:00
batman-adv batman-adv: Fix hang up with small MTU hard-interface 2022-08-20 14:17:45 +02:00
bluetooth Bluetooth: Add quirk to disable MWS Transport Configuration 2022-12-31 13:26:47 +01:00
bpf bpf: Move skb->len == 0 checks into __bpf_redirect 2022-12-31 13:26:00 +01:00
bpfilter
bridge net: Remove the obsolte u64_stats_fetch_*_irq() users (net). 2022-12-31 13:26:12 +01:00
caif net: caif: fix double disconnect client in chnl_net_open() 2022-11-26 09:27:35 +01:00
can can: af_can: fix NULL pointer dereference in can_rcv_filter 2022-12-14 11:40:56 +01:00
ceph libceph: clean up ceph_osdc_start_request prototype 2022-08-03 14:05:39 +02:00
core bpf: pull before calling skb_postpull_rcsum() 2023-01-12 12:00:29 +01:00
dcb
dccp dccp/tcp: Reset saddr on failure after inet6?_hash_connect(). 2022-12-02 17:43:08 +01:00
decnet dn_route: replace "jiffies-now>0" with "jiffies!=now" 2022-07-29 20:12:49 -07:00
dns_resolver
dsa net: dsa: tag_8021q: avoid leaking ctx on dsa_tag_8021q_register() error path 2022-12-31 13:26:15 +01:00
ethernet
ethtool ethtool: avoiding integer overflow in ethtool_phys_id() 2022-12-31 13:26:45 +01:00
hsr hsr: Synchronize sequence number updates. 2022-12-31 13:26:08 +01:00
ieee802154 net: ieee802154: fix error return code in dgram_bind() 2022-11-04 00:00:25 +09:00
ife
ipv4 mptcp: remove MPTCP 'ifdef' in TCP SYN cookies 2023-01-07 11:15:48 +01:00
ipv6 ipv6/sit: use DEV_STATS_INC() to avoid data-races 2022-12-31 13:26:45 +01:00
iucv
kcm kcm: avoid potential race in kcm_tx_work 2022-11-26 09:27:54 +01:00
key xfrm: Fix oops in __xfrm_state_delete() 2022-12-02 17:43:07 +01:00
l2tp
l3mdev
lapb
llc
mac80211 net: Remove the obsolte u64_stats_fetch_*_irq() users (net). 2022-12-31 13:26:12 +01:00
mac802154 mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() 2022-12-14 11:41:00 +01:00
mctp mctp: Remove device type check at unregister 2022-12-31 13:26:39 +01:00
mpls net: Remove the obsolte u64_stats_fetch_*_irq() users (net). 2022-12-31 13:26:12 +01:00
mptcp mptcp: fix lockdep false positive 2023-01-12 12:00:30 +01:00
ncsi
netfilter netfilter: ipset: Rework long task execution when adding/deleting entries 2023-01-12 12:00:39 +01:00
netlabel netlabel: fix typo in comment 2022-08-10 09:24:41 +01:00
netlink netlink: Bounds-check struct nlmsgerr creation 2022-11-26 09:27:55 +01:00
netrom
nfc nfc: Fix potential resource leaks 2023-01-12 12:00:32 +01:00
nsh
openvswitch openvswitch: Fix flow lookup to use unmasked key 2022-12-31 13:26:39 +01:00
packet packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE 2022-12-08 11:30:18 +01:00
phonet
psample
qrtr net: qrtr: start MHI channel after endpoit creation 2022-08-15 11:21:42 +01:00
rds net: rds: don't hold sock lock when cancelling work from rds_tcp_reset_callbacks() 2022-10-21 12:38:20 +02:00
rfkill
rose rose: Fix NULL pointer dereference in rose_send_frame() 2022-11-10 18:17:19 +01:00
rxrpc rxrpc: Fix missing unlock in rxrpc_do_sendmsg() 2022-12-31 13:26:39 +01:00
sched net: sched: cbq: dont intepret cls results when asked to drop 2023-01-12 12:00:39 +01:00
sctp sctp: sysctl: make extra pointers netns aware 2022-12-31 13:26:14 +01:00
smc net/smc: Fix possible leaked pernet namespace in smc_init() 2022-11-10 18:17:22 +01:00
strparser
sunrpc SUNRPC: ensure the matching upcall is in-flight upon downcall 2023-01-12 12:00:29 +01:00
switchdev
tipc tipc: call tipc_lxc_xmit without holding node_read_lock 2022-12-14 11:41:04 +01:00
tls bpf, sockmap: Fix missing BPF_F_INGRESS flag when using apply_bytes 2022-12-31 13:26:06 +01:00
unix unix: Fix race in SOCK_SEQPACKET's unix_dgram_sendmsg() 2022-12-31 13:26:38 +01:00
vmw_vsock net: vmw_vsock: vmci: Check memcpy_from_msg() 2022-12-31 13:26:12 +01:00
wireless wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails 2022-12-31 13:26:06 +01:00
x25 net/x25: Fix skb leak in x25_lapb_receive_frame() 2022-11-26 09:27:38 +01:00
xdp xsk: Fix backpressure mechanism on Tx 2022-10-21 12:38:05 +02:00
xfrm xfrm: replay: Fix ESN wrap around for GSO 2022-12-02 17:43:02 +01:00
Kconfig
Kconfig.debug
Makefile
compat.c net: clear msg_get_inq in __get_compat_msghdr() 2022-09-20 08:23:20 -07:00
devres.c
socket.c net: Fix a data-race around sysctl_somaxconn. 2022-08-24 13:46:58 +01:00
sysctl_net.c