milos-linux/net/netfilter/ipvs
Julian Anastasov 193989cc6d ipvs: clear the svc scheduler ptr early on edit
ip_vs_edit_service() while unbinding the old scheduler clears
the svc->scheduler ptr after the scheduler module initiates
RCU callbacks. This can cause packets to use the old
scheduler at the time when svc->sched_data is already freed
after RCU grace period.

Fix it by clearing the ptr early in ip_vs_unbind_scheduler(),
before the done_service method schedules any RCU callbacks.

Also, if the new scheduler fails to initialize when replacing
the old scheduler, try to restore the old scheduler while still
returning the error code.

Link: https://sashiko.dev/#/patchset/20260519015506.634185-1-rosenp%40gmail.com
Fixes: 05f00505a8 ("ipvs: fix crash if scheduler is changed")
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2026-06-01 13:43:52 +02:00
..
ip_vs_app.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_conn.c ipvs: fix the spin_lock usage for RT build 2026-05-05 01:52:55 +02:00
ip_vs_core.c ipvs: fix shift-out-of-bounds in ip_vs_rht_desired_size 2026-05-05 01:52:55 +02:00
ip_vs_ctl.c ipvs: clear the svc scheduler ptr early on edit 2026-06-01 13:43:52 +02:00
ip_vs_dh.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_est.c ipvs: fix races around est_mutex and est_cpulist 2026-05-05 01:52:55 +02:00
ip_vs_fo.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_ftp.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_lblc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_lblcr.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_lc.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_mh.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
ip_vs_nfct.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_nq.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_ovf.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_pe.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_pe_sip.c ipvs: switch to per-net connection table 2026-03-04 11:45:45 +01:00
ip_vs_proto.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_proto_ah_esp.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_proto_sctp.c ipvs: skip ipv6 extension headers for csum checks 2026-02-17 15:04:20 +01:00
ip_vs_proto_tcp.c ipvs: skip ipv6 extension headers for csum checks 2026-02-17 15:04:20 +01:00
ip_vs_proto_udp.c ipvs: skip ipv6 extension headers for csum checks 2026-02-17 15:04:20 +01:00
ip_vs_rr.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_sched.c ipvs: clear the svc scheduler ptr early on edit 2026-06-01 13:43:52 +02:00
ip_vs_sed.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_sh.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_sync.c ipvs: switch to per-net connection table 2026-03-04 11:45:45 +01:00
ip_vs_twos.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_wlc.c net: Remove KMSG_COMPONENT macro 2025-11-28 19:20:27 -08:00
ip_vs_wrr.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ip_vs_xmit.c ipvs: fix MTU check for GSO packets in tunnel mode 2026-04-20 23:45:43 +02:00
Kconfig sctp: use skb_crc32c() instead of __skb_checksum() 2025-05-21 15:40:16 -07:00
Makefile