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

CVE-2026-31555
MEDIUM 5.5

At a glance

Source
NVD
EPSS
EPSS 0.13 % · percentile 3 ()
State
PUBLISHED
Published
Updated
Assigner
Linux
NVD status
Modified

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.

References

Scores

VersionScoreVectorScored by
CVSS 3.1MEDIUM 5.5CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:HNVD · nvd@nist.gov (Primary)

European references

CERT-FR advisories

Affected configurations (NVD CPE)

Affected products

ProductVersions
Linux · Linuxaffected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < 33095ae3bdde5e5c264d7e88a2f3e7703a26c7aa ; affected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < e7824ec168d2ac883a213cd1f4d6cc0816002a85 ; affected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < 5e8e06bf8909e79b4acd950cf578cfc2f10bbefa ; affected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < de7c0c04ad868f2cee6671b11c0a6d20421af1da ; affected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < 7475dfad10a05a5bfadebf5f2499bd61b19ed293 ; affected 3ef240eaff36b8119ac9e2ea17cbf41179c930ba < 92e47ad03e03dbb5515bdf06444bf6b1e147310d
Linux · Linuxaffected 5.5 ; unaffected 0 < 5.5 ; unaffected 5.10.253 ≤ 5.10.* ; unaffected 5.15.203 ≤ 5.15.* ; unaffected 6.1.168 ≤ 6.1.* ; unaffected 6.6.131 ≤ 6.6.*

Sources

SourceLicence
CVE List (CVEProject cvelistV5)CVE Program Terms of Use
EPSS (FIRST.org)FIRST — attribution requested
ENISA EUVDENISA — reproduction authorised, source acknowledged
CERT-FR (ANSSI)Licence Ouverte / Etalab 2.0
NVD (NIST) via fkie-cad/nvd-json-data-feedsPublic domain — this product uses data from the NVD API but is not endorsed or certified by the NVD