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

rust: irq: pass RegistrationInner as cookie to request_irq

With commit ba268514ea14 ("rust: devres: fix race condition due to
nesting"), Devres::new() returns Result<Self> by value instead of
initializing in-place via PinInit. Because request_irq() is called
inside Devres::new(), registration.inner is still uninitialized when the
IRQ is enabled, so accessing registration.inner.device() in the IRQ
callback can read uninitialized memory.

Fix this by storing the Device and handler pointer in RegistrationInner
and passing RegistrationInner as the IRQ cookie after its fields are
initialized.

This is not needed in mainline because commit 98c63ce4d760 ("rust: irq:
make Registration compatible with lifetime-bound drivers") removed
Devres from irq::Registration and moved request_irq() after all fields
are initialized.
Published: 2026-10-23
Score: n/a
EPSS: n/a
KEV: No
Impact: Uninitialized memory read in IRQ callback
Action: Apply Patch
AI Analysis

Impact

The flaw occurs when a Rust-based IRQ registration component invokes request_irq() before fully initializing its internal data structure. The interrupt request is enabled while the cookie structure remains incomplete, causing the interrupt handler to read fields that contain garbage data. This uninitialized memory use can lead to silent corruption, kernel crashes, or inadvertent exposure of stack contents. The weakness reflects classic uninitialized memory usage and a race condition during device initialization.

Affected Systems

Custom Linux kernel builds that still contain the legacy Rust IRQ registration path—those compiled before the commit that removed Devres from irq::Registration (commit 98c63ce4) are affected. Mainline distributions have been restructured to eliminate the race condition, so they are not impacted. Users of experimental or in-house kernels that retain the legacy Rust IRQ code may be vulnerable if the safe rewrite has not been applied.

Risk and Exploitability

No EPSS score is available and the vulnerability is not listed in CISA KEV, indicating limited public exploitation. However, the scenario requires kernel-level access and can lead to denial of service or information disclosure if an attacker triggers the IRQ callback during the race window. The absence of a published CVSS score prevents a precise severity rating, but the potential impact on system stability and confidentiality suggests a moderate to high risk for affected custom kernel builds.

Generated by OpenCVE AI on October 23, 2026 at 17:49 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that incorporates the commit removing Devres from the Rust IRQ registration path.
  • For custom kernel builds that use Rust IRQ support, apply the patch that detaches Devres from irq::Registration and calls request_irq() only after all fields are initialized.
  • Rebuild any Rust-based device drivers that register IRQs to use the updated irq::Registration API rather than the legacy path.

Generated by OpenCVE AI on October 23, 2026 at 17:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 18:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-457

Fri, 23 Oct 2026 17:15:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Fri, 23 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: rust: irq: pass RegistrationInner as cookie to request_irq With commit ba268514ea14 ("rust: devres: fix race condition due to nesting"), Devres::new() returns Result<Self> by value instead of initializing in-place via PinInit. Because request_irq() is called inside Devres::new(), registration.inner is still uninitialized when the IRQ is enabled, so accessing registration.inner.device() in the IRQ callback can read uninitialized memory. Fix this by storing the Device and handler pointer in RegistrationInner and passing RegistrationInner as the IRQ cookie after its fields are initialized. This is not needed in mainline because commit 98c63ce4d760 ("rust: irq: make Registration compatible with lifetime-bound drivers") removed Devres from irq::Registration and moved request_irq() after all fields are initialized.
Title rust: irq: pass RegistrationInner as cookie to request_irq
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-23T12:11:59.043Z

Reserved: 2026-09-25T10:25:14.381Z

Link: CVE-2026-98938

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:14.720

Modified: 2026-10-23T13:17:14.720

Link: CVE-2026-98938

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T18:00:15Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-457

    Use of Uninitialized Variable