Executive brief
A vulnerability was identified in the Linux kernel's futex subsystem, which manages how different programs coordinate access to shared resources. Under specific conditions where a process is exiting while another tries to lock a resource, the system can encounter a memory error that causes a kernel warning or potential instability. This could be used by a local attacker to cause a system crash or denial-of-service, impacting the availability of the affected machine or industrial controller.
Technical details
A vulnerability exists in the Linux kernel futex subsystem due to a stale pointer in the futex_lock_pi() retry path. When futex_lock_pi_atomic() detects an exiting owner, it returns -EBUSY and stores a refcounted task pointer in 'exiting'. If wait_for_owner_exiting() consumes the reference but the operation retries and subsequently returns a different error (like -EAGAIN), the 'exiting' pointer remains populated with a stale value. This stale pointer is then passed back into wait_for_owner_exiting(), triggering a kernel warning (WARN_ON_ONCE) and potential memory corruption or instability. The fix involves explicitly resetting the 'exiting' pointer to NULL at the start of the retry loop.
Affected products
- Linux Linux Kernel All versions prior to the fix (including 5.x, 6.x)
- Siemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP V3.1.5, V3.1.6
- Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP V3.1.5, V3.1.6
- Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP V3.1.5, V3.1.6
Timeline
- 2026-03-25: other: Patch authored by Davidlohr Bueso
- 2026-04-24: disclosed: CVE published
References
- https://git.kernel.org/stable/c/210d36d892de5195e6766c45519dfb1e65f3eb83
- https://git.kernel.org/stable/c/33095ae3bdde5e5c264d7e88a2f3e7703a26c7aa
- https://git.kernel.org/stable/c/5e8e06bf8909e79b4acd950cf578cfc2f10bbefa
- https://git.kernel.org/stable/c/71112e62807d1925dc3ae6188b11f8cfc85aec23
- https://git.kernel.org/stable/c/7475dfad10a05a5bfadebf5f2499bd61b19ed293
- https://git.kernel.org/stable/c/92e47ad03e03dbb5515bdf06444bf6b1e147310d
- https://git.kernel.org/stable/c/de7c0c04ad868f2cee6671b11c0a6d20421af1da