KernelScan.io

HIGH Introduced in 4.18

drm DevRegister Race

CVE-2026-89823

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.8MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: drm: fix race between partial drm_dev_register() failure and ioctl If drm_dev_register() fails after registering a minor (e.g. render minor registered, primary minor fails), userspace could have opened the first minor and entered a drm_dev_enter() critical section. Since the unplugged flag was never set, the ioctl proceeds while the error path tears down device resources. Fix this by introducing drm_dev_synchronize_unplug(), which sets the unplugged flag and waits for the SRCU barrier, ensuring all in-flight drm_dev_enter() critical sections complete before cleanup proceeds; call it on the error path of drm_dev_register().

02

Engine v0.6.0

Risk summary

A local user who can open a DRM render node can exploit a race condition during partial device registration failure to access device resources while they are being torn down, resulting in a use-after-free. This can lead to kernel memory corruption, privilege escalation, or a system crash. The race is most reliably triggered by hotplugging a malicious USB GPU that causes registration to fail partway through.

Affecteddrivers/gpu/drm/drm_drv.c (drm core)

Vulnerability analysis

When a DRM device's registration fails after one device node has already been created (for example, the render node succeeds but the primary node fails), the error cleanup path tears down device resources without first marking the device as unplugged or waiting for any in-flight operations to finish. A local user who opened the already-registered device node during this brief window can have an ioctl in progress that accesses device memory while the cleanup path frees it, leading to a use-after-free. The fix introduces a synchronization step on the registration error path that marks the device as unplugged and waits for all in-flight critical sections to complete before any cleanup begins. This race is reachable by any local user who can open a DRM render node, and the registration failure can be triggered by hotplugging a malicious USB GPU device or by a driver encountering an error during initialization.

03

BranchIntroducedFixed inPatch commit
5.104.185.10.27026d916221395
5.154.185.15.22124d28d15c0f7
6.14.186.1.1886729990df9e7
6.124.186.12.11019dbfe4d586a
6.184.186.18.5179d09cfe9030
6.64.186.6.157a0a7e2e177f2
7.24.187.2.52d1215a72159
mainline4.187.3eb197f7d60f0
cip/5.104.185.10.271-cip7826d916221395
cip/6.14.186.1.189-cip616729990df9e7
cip/6.1-rt4.186.1.189-cip61-rt326729990df9e7
cip/6.124.186.12.111-cip3219dbfe4d586a

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)