---
id: CVE-2026-89764
title: |-
  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_re…
summary: |-
  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_re…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-825
vendor: Red Hat
product: Red Hat OpenShift Container Platform 4
affected:
  - openshift_container_platform 4
published: '2026-09-11'
updated: '2026-10-11'
sourceUpdated: '2026-10-11T14:17:07.867'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89764'
references:
  - url: 'https://git.kernel.org/stable/c/acc516dfa1972d31836b50abc0115216cd0fccc5'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/c7e3d57c705ab1053a6a1bbef96795e792da1540'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e7930d857cc7930fc39b487ea9f3a453eca3713e'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89764.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-89764'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2532452'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-89764'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89764'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89764.mbox
tags:
  - nvd
  - csaf
  - vex
  - red-hat
  - cve.org
  - score-dispute
epss: 0.00168
epssPercentile: 0.06144
scores:
  nvd: 7.8
  vendor: 5.5
  cna: 7.8
ingestedAt: '2026-09-14T15:23:07.472Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Moderate · updated 2026-09-21 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89764.json)
