HIGH Introduced in 2.6.12
infiniband BestPgsz Overflow
CVE-2026-97421
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
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
02KernelScan AI Analysis
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.
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.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.15 | 2.6.12 | 5.15.222 | ae3cf7d2c4d5 |
| 5.4 | 5.4.73 | 5.5 | 3014da7587ce |
| 5.8 | 5.8.17 | 5.9 | ddccf6cc3861 |
| 5.9 | 5.9.2 | 5.10 | e9bbb5f5349e |
| 6.1 | 2.6.12 | 6.1.189 | 5fc5b7310954 |
| 6.12 | 2.6.12 | 6.12.111 | — |
| 6.18 | 2.6.12 | 6.18.53 | — |
| 6.6 | 2.6.12 | 6.6.158 | 09ea6837a043 |
| mainline | 2.6.12 | 7.2 | — |
| cip/6.1 | 2.6.12 | 6.1.189-cip61 | ddccf6cc3861 |
| cip/6.1-rt | 2.6.12 | 6.1.189-cip61-rt32 | ddccf6cc3861 |
| cip/6.12 | 2.6.12 | 6.12.111-cip32 | ae3cf7d2c4d5 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |