CVE-2026-31555

futex: Clear stale exiting pointer in futex_lock_pi() retry path

State
Published
Severity
Not scored
Published
Apr 24, 2026
Updated
Oct 15, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

futex: Clear stale exiting pointer in futex_lock_pi() retry path

Fuzzying/stressing futexes triggered:

WARNING: kernel/futex/core.c:825 at wait_for_owner_exiting+0x7a/0x80, CPU#11: futex_lock_pi_s/524

When futex_lock_pi_atomic() sees the owner is exiting, it returns -EBUSY and stores a refcounted task pointer in 'exiting'.

After wait_for_owner_exiting() consumes that reference, the local pointer is never reset to nil. Upon a retry, if futex_lock_pi_atomic() returns a different error, the bogus pointer is passed to wait_for_owner_exiting().

CPU0 CPU1 CPU2 futex_lock_pi(uaddr) // acquires the PI futex exit() futex_cleanup_begin() futex_state = EXITING; futex_lock_pi(uaddr) futex_lock_pi_atomic() attach_to_pi_owner() // observes EXITING *exiting = owner; // takes ref return -EBUSY wait_for_owner_exiting(-EBUSY, owner) put_task_struct(); // drops ref // exiting still points to owner goto retry; futex_lock_pi_atomic() lock_pi_update_atomic() cmpxchg(uaddr) *uaddr ^= WAITERS // whatever // value changed return -EAGAIN; wait_for_owner_exiting(-EAGAIN, exiting) // stale WARN_ON_ONCE(exiting)

Fix this by resetting upon retry, essentially aligning it with requeue_pi.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 33095ae3bdde5e5c264d7e88a2f3e7703a26c7aaAffected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before e7824ec168d2ac883a213cd1f4d6cc0816002a85Affected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 5e8e06bf8909e79b4acd950cf578cfc2f10bbefaAffected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before de7c0c04ad868f2cee6671b11c0a6d20421af1daAffected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 7475dfad10a05a5bfadebf5f2499bd61b19ed293Affected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 92e47ad03e03dbb5515bdf06444bf6b1e147310dAffected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 71112e62807d1925dc3ae6188b11f8cfc85aec23Affected
  • 3ef240eaff36b8119ac9e2ea17cbf41179c930ba to before 210d36d892de5195e6766c45519dfb1e65f3eb83Affected
  • f2a9957e5c08b1b1caacd18a3dc4c0a1bdb7b463Affected
  • cf16e42709aa86aa3e37f3acc3d13d5715d90096Affected
  • 61fa9f167caaa73d0a7c88f498eceeb12c6fa3dbAffected
  • 7874eee0130adf9bee28e8720bb5dd051089def3Affected
  • fc3b55ef2c840bb2746b2d8121a0788de84f7facAffected
  • 4.4.255 to before 4.5Affected
  • 4.9.255 to before 4.10Affected
  • 4.14.158 to before 4.15Affected
  • 4.19.172 to before 4.20Affected
  • 5.4.1 to before 5.5Affected
LinuxLinux
  • 5.5Affected
  • before 5.5Not affected
  • 5.10.253 through 5.10.*Not affected
  • 5.15.203 through 5.15.*Not affected
  • 6.1.168 through 6.1.*Not affected
  • 6.6.131 through 6.6.*Not affected
  • 6.12.80 through 6.12.*Not affected
  • 6.18.21 through 6.18.*Not affected
  • 6.19.11 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.