FlawAtlas
Search the atlas
CVE-2025-40258 Not scored

mptcp: fix race condition in mptcp_schedule_work()

In the Linux kernel, the following vulnerability has been resolved: mptcp: fix race condition in mptcp_schedule_work() syzbot reported use-after-free in mptcp_schedule_work() [1] Issue here is that mptcp_schedule_work() schedules a work, then gets a refcount on sk->sk_refcnt if the work was scheduled. This refcount will be released by mptcp_worker(). [A] if (schedule_work(...)) { [B] sock_hold(sk); return true; } Problem is that mptcp_worker() can run immediately and complete before [B] We need instead : sock_hold(sk); if (schedule_work(...)) return true; sock_put(sk); [1] refcount_t: addition on 0; use-after-free. WARNING: CPU: 1 PID: 29 at lib/refcount.c:25 refcount_warn_saturate+0xfa/0x1d0 lib/refcount.c:25 Call Trace: <TASK> __refcount_add include/linux/refcount.h:-1 [inline] __refcount_inc include/linux/refcount.h:366 [inline] refcount_inc include/linux/refcount.h:383 [inline] sock_hold include/net/sock.h:816 [inline] mptcp_schedule_work+0x164/0x1a0 net/mptcp/protocol.c:943 mptcp_tout_timer+0x21/0xa0 net/mptcp/protocol.c:2316 call_timer_fn+0x17e/0x5f0 kernel/time/timer.c:1747 expire_timers kernel/time/timer.c:1798 [inline] __run_timers kernel/time/timer.c:2372 [inline] __run_timer_base+0x648/0x970 kernel/time/timer.c:2384 run_timer_base kernel/time/timer.c:2393 [inline] run_timer_softirq+0xb7/0x180 kernel/time/timer.c:2403 handle_softirqs+0x22f/0x710 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] run_ktimerd+0xcf/0x190 kernel/softirq.c:1138 smpboot_thread_fn+0x542/0xa60 kernel/smpboot.c:160 kthread+0x711/0x8a0 kernel/kthread.c:463 ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

Exploit probability 0.2%
Published December 4, 2025
Required by Not available
Last source change July 15, 2026

02 / AFFECTED SOFTWARE

Affected packages

Linux Kernel
Unknown Unknown

03 / CONNECTIONS

Connected vulnerabilities

related ALSA-2026:1143
related ALSA-2026:1661
related ALSA-2026:1662
related ALSA-2026:1690
related OPENSUSE-SU-2026:20145-1
related SUSE-SU-2026:0263-1
related SUSE-SU-2026:0278-1
related SUSE-SU-2026:0281-1
related SUSE-SU-2026:0293-1
related SUSE-SU-2026:0315-1
related SUSE-SU-2026:0317-1
related SUSE-SU-2026:0411-1
related SUSE-SU-2026:0617-1
related SUSE-SU-2026:0939-1
related SUSE-SU-2026:0940-1
related SUSE-SU-2026:0941-1
related SUSE-SU-2026:0943-1
related SUSE-SU-2026:0944-1
related SUSE-SU-2026:0946-1
related SUSE-SU-2026:0951-1
related SUSE-SU-2026:0983-1
related SUSE-SU-2026:0985-1
related SUSE-SU-2026:0992-1
related SUSE-SU-2026:0997-1
related SUSE-SU-2026:1000-1
related SUSE-SU-2026:1002-1
related SUSE-SU-2026:1039-1
related SUSE-SU-2026:1046-1
related SUSE-SU-2026:1048-1
related SUSE-SU-2026:1049-1
related SUSE-SU-2026:1073-1
related SUSE-SU-2026:1083-1
related SUSE-SU-2026:1089-1
related SUSE-SU-2026:1096-1
related SUSE-SU-2026:1099-1
related SUSE-SU-2026:1100-1
related SUSE-SU-2026:1101-1
related SUSE-SU-2026:1125-1
related SUSE-SU-2026:1132-1
related SUSE-SU-2026:1136-1
related SUSE-SU-2026:20207-1
related SUSE-SU-2026:20220-1
related SUSE-SU-2026:20228-1
related SUSE-SU-2026:20477-1
related SUSE-SU-2026:20498-1
related SUSE-SU-2026:20828-1
related SUSE-SU-2026:20829-1
related SUSE-SU-2026:20831-1
related SUSE-SU-2026:20832-1
related SUSE-SU-2026:20837-1
related SUSE-SU-2026:20840-1
related SUSE-SU-2026:20841-1
related SUSE-SU-2026:20842-1
related SUSE-SU-2026:20845-1
related SUSE-SU-2026:20847-1
related SUSE-SU-2026:20848-1
related SUSE-SU-2026:20849-1
related SUSE-SU-2026:20850-1
related SUSE-SU-2026:20851-1
related SUSE-SU-2026:20852-1
related SUSE-SU-2026:20853-1
related SUSE-SU-2026:20854-1
related SUSE-SU-2026:20855-1
related SUSE-SU-2026:20856-1
related SUSE-SU-2026:20857-1
related SUSE-SU-2026:20858-1
related SUSE-SU-2026:20859-1
related SUSE-SU-2026:20860-1
related SUSE-SU-2026:20861-1
related SUSE-SU-2026:20862-1
related SUSE-SU-2026:20863-1
related SUSE-SU-2026:20864-1
related SUSE-SU-2026:20865-1
related SUSE-SU-2026:20866-1
related SUSE-SU-2026:20876-1
related SUSE-SU-2026:20880-1
related SUSE-SU-2026:20881-1
related SUSE-SU-2026:20882-1
related SUSE-SU-2026:20883-1
related SUSE-SU-2026:20884-1
related SUSE-SU-2026:20885-1
related SUSE-SU-2026:20886-1
related SUSE-SU-2026:20887-1
related SUSE-SU-2026:20888-1
related SUSE-SU-2026:20889-1
related SUSE-SU-2026:20891-1
related SUSE-SU-2026:20892-1
related SUSE-SU-2026:20893-1
related SUSE-SU-2026:20894-1
related SUSE-SU-2026:20895-1
related SUSE-SU-2026:20896-1
related SUSE-SU-2026:20897-1
related SUSE-SU-2026:20898-1
related SUSE-SU-2026:20899-1
related SUSE-SU-2026:20900-1
related SUSE-SU-2026:20944-1
related SUSE-SU-2026:20945-1
related SUSE-SU-2026:20946-1
related SUSE-SU-2026:20947-1

04 / EVIDENCE

Source records

Open Source Vulnerabilities CVE-2025-40258

In the Linux kernel, the following vulnerability has been resolved: mptcp: fix race condition in mptcp_schedule_work() syzbot reported use-after-free in mptcp_schedule_work() [1] Issue here is that mptcp_schedule_work() schedules a work, then gets a refcount on sk->sk_refcnt if the work was scheduled. This refcount will be released by mptcp_worker(). [A] if (schedule_work(...)) { [B] sock_hold(sk); return true; } Problem is that mptcp_worker() can run immediately and complete before [B] We need instead : sock_hold(sk); if (schedule_work(...)) return true; sock_put(sk); [1] refcount_t: addition on 0; use-after-free. WARNING: CPU: 1 PID: 29 at lib/refcount.c:25 refcount_warn_saturate+0xfa/0x1d0 lib/refcount.c:25 Call Trace: <TASK> __refcount_add include/linux/refcount.h:-1 [inline] __refcount_inc include/linux/refcount.h:366 [inline] refcount_inc include/linux/refcount.h:383 [inline] sock_hold include/net/sock.h:816 [inline] mptcp_schedule_work+0x164/0x1a0 net/mptcp/protocol.c:943 mptcp_tout_timer+0x21/0xa0 net/mptcp/protocol.c:2316 call_timer_fn+0x17e/0x5f0 kernel/time/timer.c:1747 expire_timers kernel/time/timer.c:1798 [inline] __run_timers kernel/time/timer.c:2372 [inline] __run_timer_base+0x648/0x970 kernel/time/timer.c:2384 run_timer_base kernel/time/timer.c:2393 [inline] run_timer_softirq+0xb7/0x180 kernel/time/timer.c:2403 handle_softirqs+0x22f/0x710 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] run_ktimerd+0xcf/0x190 kernel/softirq.c:1138 smpboot_thread_fn+0x542/0xa60 kernel/smpboot.c:160 kthread+0x711/0x8a0 kernel/kthread.c:463 ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

View original source

05 / REFERENCES

Further evidence