Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-46325— RDMA/rxe: Fix iova-to-va conversion for MR page sizes != PAGE_SIZE

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于RDMA/rxe中MR页大小与系统PAGE_SIZE不同时,iova到va转换处理不正确,导致地址转换错误。

CVSS 9.8 · Critical EPSS 0.35% · P27

Affected Version Matrix 10

VendorProduct Version RangeStatus
Linux Linux 592627ccbdff0ec6fff00fc761142a76db750dd4< 409c2c5508f3d30627bea576f8676de523cb906e affected
592627ccbdff0ec6fff00fc761142a76db750dd4< 836f6c13c9674027793f720be3f15ecd2b90b6ca affected
592627ccbdff0ec6fff00fc761142a76db750dd4< 12985e5915a0b8354796efadaaeb201eed115377 affected
0e443760b8b7b1e6723f4408afa056b2bc4fea12 affected
6.2.3< 6.3 affected
6.3 affected
< 6.3 unaffected
6.18.14≤ 6.18.* unaffected
… +2 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-46325

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
RDMA/rxe: Fix iova-to-va conversion for MR page sizes != PAGE_SIZE
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Fix iova-to-va conversion for MR page sizes != PAGE_SIZE The current implementation incorrectly handles memory regions (MRs) with page sizes different from the system PAGE_SIZE. The core issue is that rxe_set_page() is called with mr->page_size step increments, but the page_list stores individual struct page pointers, each representing PAGE_SIZE of memory. ib_sg_to_page() has ensured that when i>=1 either a) SG[i-1].dma_end and SG[i].dma_addr are contiguous or b) SG[i-1].dma_end and SG[i].dma_addr are mr->page_size aligned. This leads to incorrect iova-to-va conversion in scenarios: 1) page_size < PAGE_SIZE (e.g., MR: 4K, system: 64K): ibmr->iova = 0x181800 sg[0]: dma_addr=0x181800, len=0x800 sg[1]: dma_addr=0x173000, len=0x1000 Access iova = 0x181800 + 0x810 = 0x182010 Expected VA: 0x173010 (second SG, offset 0x10) Before fix: - index = (0x182010 >> 12) - (0x181800 >> 12) = 1 - page_offset = 0x182010 & 0xFFF = 0x10 - xarray[1] stores system page base 0x170000 - Resulting VA: 0x170000 + 0x10 = 0x170010 (wrong) 2) page_size > PAGE_SIZE (e.g., MR: 64K, system: 4K): ibmr->iova = 0x18f800 sg[0]: dma_addr=0x18f800, len=0x800 sg[1]: dma_addr=0x170000, len=0x1000 Access iova = 0x18f800 + 0x810 = 0x190010 Expected VA: 0x170010 (second SG, offset 0x10) Before fix: - index = (0x190010 >> 16) - (0x18f800 >> 16) = 1 - page_offset = 0x190010 & 0xFFFF = 0x10 - xarray[1] stores system page for dma_addr 0x170000 - Resulting VA: system page of 0x170000 + 0x10 = 0x170010 (wrong) Yi Zhang reported a kernel panic[1] years ago related to this defect. Solution: 1. Replace xarray with pre-allocated rxe_mr_page array for sequential indexing (all MR page indices are contiguous) 2. Each rxe_mr_page stores both struct page* and offset within the system page 3. Handle MR page_size != PAGE_SIZE relationships: - page_size > PAGE_SIZE: Split MR pages into multiple system pages - page_size <= PAGE_SIZE: Store offset within system page 4. Add boundary checks and compatibility validation This ensures correct iova-to-va conversion regardless of MR page size and system PAGE_SIZE relationship, while improving performance through array-based sequential access. Tests on 4K and 64K PAGE_SIZE hosts: - rdma-core/pytests $ ./build/bin/run_tests.py --dev eth0_rxe - blktest: $ TIMEOUT=30 QUICK_RUN=1 USE_RXE=1 NVMET_TRTYPES=rdma ./check nvme srp rnbd [1] https://lore.kernel.org/all/CAHj4cs9XRqE25jyVw9rj9YugffLn5+f=1znaBEnu1usLOciD+g@mail.gmail.com/T/
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于RDMA/rxe中MR页大小与系统PAGE_SIZE不同时,iova到va转换处理不正确,导致地址转换错误。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 592627ccbdff0ec6fff00fc761142a76db750dd4 ~ 409c2c5508f3d30627bea576f8676de523cb906e -
Linux Linux 6.3 -

II. Public POCs for CVE-2026-46325

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-46325

请登录查看更多情报信息。

Patches & Fixes for CVE-2026-46325 (3)

Same Patch Batch · Linux · 2026-06-09 · 21 CVEs total

CVE-2026-46316 9.3 CRITICAL KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry
CVE-2026-46317 8.8 HIGH KVM: arm64: Reassign nested_mmus array behind mmu_lock
CVE-2026-46326 8.4 HIGH iio: pressure: mprls0025pa: fix spi_transfer struct initialisation
CVE-2026-46332 8.0 HIGH greybus: gb-beagleplay: bound bootloader receive buffering
CVE-2026-52907 7.8 HIGH media: rockchip: rkcif: fix off by one bugs
CVE-2026-46319 7.8 HIGH net/sched: act_ct: Only release RCU read lock after ct_ft
CVE-2026-46330 7.8 HIGH Revert "net/smc: Introduce TCP ULP support"
CVE-2026-46323 7.8 HIGH net: gro: don't merge zcopy skbs
CVE-2026-46327 7.8 HIGH dm: fix unlocked test for dm_suspended_md
CVE-2026-46324 7.8 HIGH netfilter: nf_tables: use list_del_rcu for netlink hooks
CVE-2026-52906 7.7 HIGH 9p: fix access mode flags being ORed instead of replaced
CVE-2026-46320 7.4 HIGH tap: free page on error paths in tap_get_user_xdp()
CVE-2026-46328 7.3 HIGH apparmor: fix rlimit for posix cpu timers
CVE-2026-46322 7.1 HIGH tun: free page on build_skb failure in tun_xdp_one()
CVE-2026-46321 7.1 HIGH tun: free page on short-frame rejection in tun_xdp_one()
CVE-2026-46329 erofs: handle end of filesystem properly for file-backed mounts
CVE-2026-46318 Revert "mm/hugetlbfs: update hugetlbfs to use mmap_prepare"
CVE-2026-52904 drm/nouveau: fix nvkm_device leak on aperture removal failure
CVE-2026-52905 mm/damon/core: disallow non-power of two min_region_sz on damon_start()
CVE-2026-46315 io_uring/waitid: clear waitid info before copying it to userspace

IV. Related Vulnerabilities

V. Comments for CVE-2026-46325

No comments yet


Leave a comment