---
id: CVE-2026-98938
title: 'rust: irq: pass RegistrationInner as cookie to request_irq'
summary: |-
  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<S…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 29e16fcd67ee5b1d0417a657294cf96fdf2f8df9 <
    9a7931e847f338a687e96cde9f37e0cff83ddd84
  - Linux 6.18
published: '2026-10-23'
updated: '2026-10-23'
sourceUpdated: '2026-10-23T12:11:59.043Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98938'
references:
  - url: 'https://git.kernel.org/stable/c/9a7931e847f338a687e96cde9f37e0cff83ddd84'
tags:
  - cve.org
ingestedAt: '2026-10-23T13:24:55.564Z'
---

## Overview

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.

## Affected

- `Linux >= 29e16fcd67ee5b1d0417a657294cf96fdf2f8df9 < 9a7931e847f338a687e96cde9f37e0cff83ddd84`
- `Linux 6.18`

## Remediation

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