linux/net/xfrm
Hyunwoo Kim 664e9df532 espintcp: Fix race condition in espintcp_close()
[ Upstream commit e1512c1db9 ]

This issue was discovered during a code audit.

After cancel_work_sync() is called from espintcp_close(),
espintcp_tx_work() can still be scheduled from paths such as
the Delayed ACK handler or ksoftirqd.
As a result, the espintcp_tx_work() worker may dereference a
freed espintcp ctx or sk.

The following is a simple race scenario:

           cpu0                             cpu1

  espintcp_close()
    cancel_work_sync(&ctx->work);
                                     espintcp_write_space()
                                       schedule_work(&ctx->work);

To prevent this race condition, cancel_work_sync() is
replaced with disable_work_sync().

Fixes: e27cca96cd ("xfrm: add espintcp (RFC 8229)")
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/aZSie7rEdh9Nu0eM@v4bel
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-03-04 07:20:44 -05:00
..
espintcp.c espintcp: Fix race condition in espintcp_close() 2026-03-04 07:20:44 -05:00
Kconfig xfrm: config: add CONFIG_XFRM_IPTFS 2024-12-05 10:00:53 +01:00
Makefile xfrm: iptfs: add new iptfs xfrm mode impl 2024-12-05 10:01:35 +01:00
trace_iptfs.h xfrm: iptfs: add tracepoint functionality 2024-12-05 10:02:36 +01:00
xfrm_algo.c xfrm: ipcomp: Use crypto_acomp interface 2025-03-21 17:36:49 +08:00
xfrm_compat.c xfrm: netlink: add config (netlink) options 2024-12-05 10:01:15 +01:00
xfrm_device.c xfrm: always flush state and policy upon NETDEV_UNREGISTER event 2026-03-04 07:20:44 -05:00
xfrm_hash.c mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
xfrm_hash.h xfrm: add state hashtable keyed by seq 2021-05-14 13:52:01 +02:00
xfrm_inout.h xfrm: move xfrm4_extract_header to common helper 2020-05-06 09:40:08 +02:00
xfrm_input.c xfrm: hold device only for the asynchronous decryption 2025-06-20 10:39:19 +02:00
xfrm_interface_bpf.c bpf: treewide: Annotate BPF kfuncs in BTF 2024-01-31 20:40:56 -08:00
xfrm_interface_core.c xfrm: interface: fix use-after-free after changing collect_md xfrm interface 2025-07-04 09:25:25 +02:00
xfrm_ipcomp.c xfrm: delete x->tunnel as we delete x 2025-07-08 13:28:27 +02:00
xfrm_iptfs.c xfrm: Switch to use hrtimer_setup() 2025-02-18 10:35:47 +01:00
xfrm_nat_keepalive.c xfrm: Use nested-BH locking for nat_keepalive_sk_ipv[46] 2025-05-15 15:23:31 +02:00
xfrm_output.c xfrm: Prevent locally generated packets from direct output in tunnel mode 2025-10-30 11:52:38 +01:00
xfrm_policy.c xfrm: skip templates check for packet offload tunnel mode 2026-03-04 07:20:43 -05:00
xfrm_proc.c xfrm: snmp: do not use SNMP_MIB_SENTINEL anymore 2025-09-08 18:06:21 -07:00
xfrm_replay.c ipsec-2025-01-27 2025-01-27 15:15:12 -08:00
xfrm_state.c xfrm: set ipv4 no_pmtu_disc flag only on output sa when direction is set 2026-01-23 11:21:13 +01:00
xfrm_state_bpf.c bpf: treewide: Annotate BPF kfuncs in BTF 2024-01-31 20:40:56 -08:00
xfrm_sysctl.c net: Remove ctl_table sentinel elements from several networking subsystems 2024-05-03 13:29:42 +01:00
xfrm_user.c xfrm: fix memory leak in xfrm_add_acquire() 2025-11-14 10:12:36 +01:00