CVE-2022-50093

iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE)

published June 18, 2025

CVSS
—
EPSS
0%
Percentile
16.7
In the wild
Unconfirmed
What it is

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

iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE)

KASAN reports:

[ 4.668325][ T0] BUG: KASAN: wild-memory-access in dmar_parse_one_rhsa (arch/x86/include/asm/bitops.h:214 arch/x86/include/asm/bitops.h:226 include/asm-generic/bitops/instrumented-non-atomic.h:142 include/linux/nodemask.h:415 drivers/iommu/intel/dmar.c:497)

[ 4.676149][ T0] Read of size 8 at addr 1fffffff85115558 by task swapper/0/0

[ 4.683454][ T0]

[ 4.685638][ T0] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.19.0-rc3-00004-g0e862838f290 #1

[ 4.694331][ T0] Hardware name: Supermicro SYS-5018D-FN4T/X10SDV-8C-TLN4F, BIOS 1.1 03/02/2016

[ 4.703196][ T0] Call Trace:

[ 4.706334][ T0] <TASK>

[ 4.709133][ T0] ? dmar_parse_one_rhsa (arch/x86/include/asm/bitops.h:214 arch/x86/include/asm/bitops.h:226 include/asm-generic/bitops/instrumented-non-atomic.h:142 include/linux/nodemask.h:415 drivers/iommu/intel/dmar.c:497)

after converting the type of the first argument (@nr, bit number)

of arch_test_bit() from `long` to `unsigned long`[0].

Under certain conditions (for example, when ACPI NUMA is disabled

via command line), pxm_to_node() can return %NUMA_NO_NODE (-1).

It is valid 'magic' number of NUMA node, but not valid bit number

to use in bitops.

node_online() eventually descends to test_bit() without checking

for the input, assuming it's on caller side (which might be good

for perf-critical tasks). There, -1 becomes %ULONG_MAX which leads

to an insane array index when calculating bit position in memory.

For now, add an explicit check for @node being not %NUMA_NO_NODE

before calling test_bit(). The actual logics didn't change here

at all.

[0] https://github.com/norov/linux/commit/0e862838f290147ea9c16db852d8d494b552d38d

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00260 · 16.7th percentile
Published
2025-06-18T11:02Z
EPSS history
Timeline
  • 18 JUN 11:02Z
    iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE)
    cvelistv5