CVE-2026-74390
RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs
Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs The irdma_copy_user_pgaddrs function loops through all of the umem DMA blocks to populate the PBLEs and will stop when either the last DMA block is reached or palloc->total_cnt is reached. The issue is that the logic for checking palloc->total_cnt would only work for non-zero values. When irdma_setup_pbles is called with lvl==0, it calls irdma_copy_user_pgaddrs with palloc->total_cnt==0, which means the only way to break out of the loop is to reach the last umem DMA block, which means it could end up going beyond the fixed size of 4 iwmr->pgaddrmem array that is used in the lvl==0 case. In the case of QP/CQ/SRQ rings, the value of lvl is determined by a separate input (for example, req.cq_pages in the case of a CQ). So, we must perform explicit checking to ensure we don't overflow the pgaddrmem array if the user provides a umem that consists of more blocks than their provided req.cq_pages.
INFO
Published Date :
Aug. 15, 2026, 6:22 a.m.
Last Modified :
Aug. 15, 2026, 6:22 a.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products
The following products are affected by CVE-2026-74390
vulnerability.
Even if cvefeed.io is aware of the exact versions of the
products
that
are
affected, the information is not represented in the table below.
No affected product recoded yet
Solution
- Apply the Linux kernel patch for RDMA/irdma.
- Ensure user-provided values do not exceed array bounds.
- Validate DMA block counts against allocated memory.
- Update the kernel to the corrected version.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-74390.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-74390 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-74390
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-74390 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-74390 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Aug. 15, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '4780f58672ee6328accd54a95f9c00683477e499', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '79a20a8e201a779224b4bf115250a7713bde72c0', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '9f8f0d2099e3de1194e37dc933ae0c4206b09aaf', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '192a3be0e3759daa24af2841208b074ca6dbaabc', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '424d51d33c7541a86934067c2c0538124687fc90', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': 'abd27a977b419d584efa659488c22d2306987b29', 'versionType': 'git'}, {'status': 'affected', 'version': 'b48c24c2d710cf34810c555dcef883a3d35a9c08', 'lessThan': '5ebb3ed757be3e04cf803026004aa0beaeb13e9b', 'versionType': 'git'}], 'programFiles': ['drivers/infiniband/hw/irdma/verbs.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '5.14'}, {'status': 'unaffected', 'version': '0', 'lessThan': '5.14', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.15.212', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.97', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.40', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.5', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2-rc1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/infiniband/hw/irdma/verbs.c'], 'defaultStatus': 'affected'}] Added Description In the Linux kernel, the following vulnerability has been resolved: RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs The irdma_copy_user_pgaddrs function loops through all of the umem DMA blocks to populate the PBLEs and will stop when either the last DMA block is reached or palloc->total_cnt is reached. The issue is that the logic for checking palloc->total_cnt would only work for non-zero values. When irdma_setup_pbles is called with lvl==0, it calls irdma_copy_user_pgaddrs with palloc->total_cnt==0, which means the only way to break out of the loop is to reach the last umem DMA block, which means it could end up going beyond the fixed size of 4 iwmr->pgaddrmem array that is used in the lvl==0 case. In the case of QP/CQ/SRQ rings, the value of lvl is determined by a separate input (for example, req.cq_pages in the case of a CQ). So, we must perform explicit checking to ensure we don't overflow the pgaddrmem array if the user provides a umem that consists of more blocks than their provided req.cq_pages. Added Reference https://git.kernel.org/stable/c/192a3be0e3759daa24af2841208b074ca6dbaabc Added Reference https://git.kernel.org/stable/c/424d51d33c7541a86934067c2c0538124687fc90 Added Reference https://git.kernel.org/stable/c/4780f58672ee6328accd54a95f9c00683477e499 Added Reference https://git.kernel.org/stable/c/5ebb3ed757be3e04cf803026004aa0beaeb13e9b Added Reference https://git.kernel.org/stable/c/79a20a8e201a779224b4bf115250a7713bde72c0 Added Reference https://git.kernel.org/stable/c/9f8f0d2099e3de1194e37dc933ae0c4206b09aaf Added Reference https://git.kernel.org/stable/c/abd27a977b419d584efa659488c22d2306987b29