KernelScan.io

HIGH Introduced in 2.6.12

infiniband BestPgsz Overflow

CVE-2026-97421

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 AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: RDMA/umem: Be careful about boundary conditions in ib_umem_find_best_pgsz() Several corner cases, especially important on 32 bits: - umem->iova is u64, the function argument should pass in u64 or iova will be truncated - Check that the length is not too large for the iova - Check that lengths > 4G don't overflow the GENMASK

02

Engine v0.6.0

Risk summary

A local process with access to RDMA device files can trigger integer overflow and truncation bugs in the page-size selection logic during RDMA memory registration, primarily on 32-bit systems. An incorrect page size can cause the RDMA hardware to DMA to or from wrong memory locations, leading to kernel memory corruption, information disclosure, or crashes.

Affecteddrivers/infiniband/core/umem.c (RDMA/InfiniBand umem)

Vulnerability analysis

When a process registers memory for RDMA, the kernel computes the largest hardware page size that can cover the region. On 32-bit systems, the virtual address argument is truncated from 64-bit to 32-bit, the sum of the region length and address can silently overflow, and a bitmask generation macro can overflow for lengths exceeding 4 GB. Any of these conditions causes an incorrect page size to be selected, which can result in the RDMA hardware performing DMA transfers against the wrong physical memory — a memory-corruption primitive. The fix widens the address parameter to 64-bit, adds an explicit overflow check that returns failure when the address-plus-length sum exceeds the representable range, and guards the bitmask computation so it does not overflow. This is reachable locally by any process that can open RDMA user-verbs device files; it does not require root, only access to the RDMA subsystem, and is most dangerous on 32-bit kernels with RDMA-capable hardware.

03

BranchIntroducedFixed inPatch commit
5.45.4.735.53014da7587ce
5.85.8.175.9ddccf6cc3861
5.95.9.25.10e9bbb5f5349e
5.152.6.125.15.222ae3cf7d2c4d5
6.12.6.126.1.1895fc5b7310954
6.62.6.126.6.15809ea6837a043
6.122.6.126.12.111—
6.182.6.126.18.53—
mainline2.6.127.2—
cip/6.122.6.126.12.111-cip32ae3cf7d2c4d5