linux/include
Julian Anastasov e4feec3174 ipvs: clear the svc scheduler ptr early on edit
[ Upstream commit 193989cc6d ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-06-19 13:33:32 +02:00
..
acpi ACPICA: Allow address_space_handler Install and _REG execution as 2 separate steps 2026-04-18 10:33:26 +02:00
asm-generic mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather 2026-04-18 10:33:18 +02:00
clocksource x86/hyperv: Fix hv tsc page based sched_clock for hibernation 2025-01-09 13:28:42 +01:00
crypto crypto: algif_aead - Revert to operating out-of-place 2026-04-30 11:24:38 +02:00
drm drm/dp: Add eDP 1.5 bit definition 2026-06-19 13:33:25 +02:00
dt-bindings dt-bindings: clock: qcom,dispcc-sc7180: Define MDSS resets 2026-06-01 17:35:37 +02:00
keys KEYS: trusted: allow use of kernel RNG for key material 2023-10-19 23:05:33 +02:00
kunit kunit: fix kernel-doc warnings due to mismatched arg names 2021-10-06 17:54:07 -06:00
kvm KVM: arm64: vgic-v4: Make the doorbell request robust w.r.t preemption 2024-07-05 09:14:51 +02:00
linux Disable -Wattribute-alias for clang-23 and newer 2026-06-19 13:33:32 +02:00
math-emu math-emu: Fix fall-through warning 2021-07-13 13:57:44 -05:00
media media: dvb-core: dmxdevfilter must always flush bufs 2026-03-04 07:20:01 -05:00
memory memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode 2022-05-09 09:14:34 +02:00
misc ocxl: Update the Process Element Entry 2020-12-04 01:01:30 +11:00
net ipvs: clear the svc scheduler ptr early on edit 2026-06-19 13:33:32 +02:00
pcmcia pcmcia: Replace zero-length array with flexible-array 2020-05-18 10:28:31 +02:00
ras Revert "mm/memory-failure.c: fix race with changing page compound again" 2022-07-12 16:35:17 +02:00
rdma RDMA/core: add rdma_rw_max_sge() helper for SQ sizing 2026-03-04 07:19:43 -05:00
scsi scsi: libsas: Add sas_task_find_rq() 2025-10-19 16:21:40 +02:00
soc soc: qcom: rpmh-rsc: Enhance check for VRM in-flight request 2024-06-16 13:39:55 +02:00
sound ASoC: core: Do not call link_exit() on uninitialized rtd objects 2026-04-18 10:33:12 +02:00
target scsi: target: Fix multiple LUN_RESET handling 2023-05-11 23:00:26 +09:00
trace btrfs: tracepoints: fix sleep while in atomic context in btrfs_sync_file() 2026-06-01 17:35:43 +02:00
uapi net: phy: qcom: at803x: Use the correct bit to disable extended next page 2026-06-01 17:35:29 +02:00
vdso time64.h: Consolidated PSEC_PER_SEC definition 2021-04-06 16:32:17 -07:00
video fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free 2026-06-01 17:35:19 +02:00
xen xen: replace xen_remap() with memremap() 2025-07-17 18:30:48 +02:00