CVE-2026-89764

CVE-2026-89764

High · published September 12, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
5.9
In the wild
Unconfirmed
What it is

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

rust: devres: fix race between concurrent revokers

There is a potential race condition when two paths try to revoke a

Devres concurrently.

The driver core's devres_release_all() calls Revocable::revoke() via the

release callback, while Devres::drop() calls revoke_nosync() on another

CPU.

The revoker that does not claim the is_available swap returns

immediately, but the revoker that did may still be executing

drop_in_place() on the inner data. This can cause a use-after-free when

the other revoker's caller proceeds to drop adjacent resources that

drop_in_place() still references (e.g., Devres<DmaMappedSgt> racing with

SGTable freeing the backing sg_table and pages).

Fix this by adding a Completion. The release callback signals the

Completion after revoke() finishes, and Devres::drop() waits for it when

it loses the is_available swap. This ensures the wrapped object is fully

torn down before Devres::drop() returns.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00168 · 5.9th percentile
Published
2026-09-12T00:20Z
References (3)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:47Z
    rust: devres: fix race between concurrent revokers
    cvelistv5