CVE-2026-31555

CVE-2026-31555

Medium · published April 24, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
6.1
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00171 · 6.1th percentile
Published
2026-04-24T19:16Z
Affected products (20)
ProductVersionsFixed in
linux/linux_kernel≥ 4.4.255, < 4.54.5
linux/linux_kernel≥ 4.9.255, < 4.104.10
linux/linux_kernel≥ 4.14.158, < 4.154.15
linux/linux_kernel≥ 4.19.172, < 4.204.20
linux/linux_kernel≥ 5.4.1, < 5.55.5
linux/linux_kernel≥ 5.5.1, < 5.10.2535.10.253
linux/linux_kernel≥ 5.11, < 5.15.2035.15.203
linux/linux_kernel≥ 5.16, < 6.1.1686.1.168
linux/linux_kernel≥ 6.2, < 6.6.1316.6.131
linux/linux_kernel≥ 6.7, < 6.12.806.12.80
linux/linux_kernel≥ 6.13, < 6.18.216.18.21
linux/linux_kernel≥ 6.19, < 6.19.116.19.11
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (11)
EPSS history
Timeline
  • 24 APR 14:35Z
    futex: Clear stale exiting pointer in futex_lock_pi() retry path
    cvelistv5