← All Advisories
Reported from OT-Advisories.com as of

CVE-2026-90003

Last refreshed2026-10-19

Status: UPDATED  |  Advisory ID: CVE-2026-90003

Key Details

CVECVE-2026-90003
CVSS Score / Version
7.8 (High) / CVSS v3.1
Updated2026-10-19
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Prose
attack vector is local; attack complexity is low; privileges required is low; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.
Affected products
Linux Kernel

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
LinuxLinux Kernel
SubsystemsOT Supporting Infrastructure
SectorsAll Sectors

What to Know

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

futex: Prevent rcuwait use-after-free during requeue PI

On PREEMPT_RT, FUTEX_CMP_REQUEUE_PI can trigger a KASAN report

(slab-out-of-bounds) in futex_requeue_pi_complete() invocation of

rcuwait_wake_up().

The futex_q used by futex_wait_requeue_pi() is allocated on the waiter's

stack. An early wakeup can race with a PI requeue as follows:

waiter requeue task

------ ------------

futex_wait_requeue_pi()

futex_do_wait()

schedule()

futex_requeue

futex_proxy_trylock_atomic()

futex_requeue_pi_prepare()

Q_REQUEUE_PI_NONE -> Q_REQUEUE_PI_IN_PROGRESS

* timeout/ signal wakes waiter *

futex_requeue_pi_wakeup_sync()

Q_REQUEUE_PI_IN_PROGRESS -> Q_REQUEUE_PI_WAIT

requeue_pi_wake_futex

futex_requeue_pi_complete()

cmpxchg Q_REQUEUE_PI_WAIT -> Q_REQUEUE_PI_LOCKED

rcuwait_wait_event()

if (atomic_read(&q->requeue_state) != Q_REQUEUE_PI_WAIT)

break /* no schedule() */

/* q.pi_state->owner == current */

futex_private_hash_put()

/* return from syscall */

rcuwait_wake_up(&q->requeue_wait)

/* q is gone */

futex_requeue_pi_complete() publishes Q_REQUEUE_PI_LOCKED before

calling rcuwait_wake_up(). The waiter observes this state in

rcuwait_wait_event() before invoking schedule() in rcuwait_wait_event().

Here, the waiter is free leave the syscall before requeue task can

complete the wake.

To address this race skip rcuwait_wake_up() in the Q_REQUEUE_PI_LOCKED

case.

This state is only published by requeue_pi_wake_futex(), which saves

q->task before futex_requeue_pi_complete() and wakes the waiter via

wake_up_state().

This wake is intended to wake the waiter from its futex_do_wait() sleep.

If the waiter is still sleeping there, it can not get into the

Q_REQUEUE_PI_WAIT state (and require this removed wake).

Should the waiter be woken up from futex_do_wait() by other means (as in

this example) and sleep in futex_requeue_pi_wakeup_sync() then the

wake_up_state() from requeue_pi_wake_futex() will wake it, too.

Should the waiter task terminate before wake_up_state() had a chance to

wake the task then the task pointer does not become invalid because the

futex_hash_bucket::lock is held and the task pointer is RCU protected.

[bigeasy: Updated comment and commit message] (NVD)

What to Do

Monitor Linux's web page for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-90003
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-90003
Report compilation © 2026 OT-Advisories.com  ·  CC BY 4.0  ·  Source materials remain the property of their respective publishers as cited.