KernelScan.io

HIGH Introduced in 2.6.12

dm TableDevices UAF

CVE-2026-89998

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.3MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: dm: fix race when loading and unloading a table If the userspace calls two concurrent table load ioctls and one of them succeeds and the other fails, there is a race condition because dm_setup_md_queue walks &md->table_devices without any lock. If the walk races with dm_table_destroy -> free_devices -> dm_put_table_device, there is access to invalid memory. Fix this race by extending the lock over the list walk.

02

Engine v0.6.0

Risk summary

A local attacker with CAP_SYS_ADMIN can trigger a use-after-free in the device-mapper subsystem by issuing two concurrent table load ioctls where one succeeds and the other fails. The race can corrupt kernel heap memory, potentially leading to privilege escalation or denial of service. Systems where unprivileged users cannot obtain CAP_SYS_ADMIN are not at risk from this specific path.

Affecteddrivers/md/dm.c (device-mapper)

Vulnerability analysis

When two concurrent device-mapper table load ioctls race—one succeeding and the other failing—the successful path walks the mapped device's table device list without holding the protecting lock, while the failing path tears down its table and frees those same list entries. This results in a use-after-free where the successful path accesses memory that the failing path has already released. The fix extends the existing mutex over the entire list walk and holder-registration loop, and restructures the error-handling paths so the lock is held during cleanup, preventing the teardown from freeing entries while another thread is still iterating over them. The vulnerability is reachable locally by any process holding CAP_SYS_ADMIN in the init namespace that issues concurrent DM table load ioctls.

03

BranchIntroducedFixed inPatch commit
6.06.0.166.10ea6e5ad4a58
6.16.1.26.1.188b02e35b81176
6.122.6.126.12.110af1f32ccf805
6.182.6.126.18.5100ad6f9ed27f
6.62.6.126.6.157a1af1884c960
7.22.6.127.2.55380c7f6335c
mainline2.6.127.3—
cip/6.12.6.126.1.189-cip61b02e35b81176
cip/6.1-rt2.6.126.1.189-cip61-rt32b02e35b81176
cip/6.122.6.126.12.111-cip32a1af1884c960

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.10Affected — no CIP fix yet (latest 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)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)