CVE-2026-90388 (GCVE-0-2026-90388)
Vulnerability from cvelistv5 – Published: 2026-09-17 16:09 – Updated: 2026-10-19 09:02| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
9420139f516d7fbc248ce17f35275cb005ed98ea , < ac9cd0a669b8be5d178dbd471b0d68039dac58b5
(git)
Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < db46cb9da83a507d86d2bb080bdb09c865da3d0a (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < d56c3f955b21e5764c1497e295a5b5d0b3a40470 (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < 06dffc96693083dda3412311406e558cf27f1574 (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < a4ace31d732b657d774e31fb444c0c27d42c78e5 (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < fb0b39287ba894dbdfac2901c51788b63f5c2291 (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < 8c486293ddd0af60991408149fc3e964ea888dc4 (git) Affected: 9420139f516d7fbc248ce17f35275cb005ed98ea , < af95a0ebc0a0db0762be75f51eadf770bad01aaa (git) Affected: 47184b9ddf184cc9a77cf441943a0fe9b7afa575 (git) Affected: 5.8.6 , < 5.9 (semver) |
guessed | |
| Linux | Linux |
Affected:
5.9
Unaffected: 0 , < 5.9 (semver) Unaffected: 5.10.270 , ≤ 5.10.* (semver) Unaffected: 5.15.221 , ≤ 5.15.* (semver) Unaffected: 6.1.188 , ≤ 6.1.* (semver) Unaffected: 6.6.157 , ≤ 6.6.* (semver) Unaffected: 6.12.110 , ≤ 6.12.* (semver) Unaffected: 6.18.52 , ≤ 6.18.* (semver) Unaffected: 7.2.6 , ≤ 7.2.* (semver) Unaffected: 7.3 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/iommu/dma-iommu.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ac9cd0a669b8be5d178dbd471b0d68039dac58b5",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "db46cb9da83a507d86d2bb080bdb09c865da3d0a",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "d56c3f955b21e5764c1497e295a5b5d0b3a40470",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "06dffc96693083dda3412311406e558cf27f1574",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "a4ace31d732b657d774e31fb444c0c27d42c78e5",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "fb0b39287ba894dbdfac2901c51788b63f5c2291",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "8c486293ddd0af60991408149fc3e964ea888dc4",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "af95a0ebc0a0db0762be75f51eadf770bad01aaa",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"status": "affected",
"version": "47184b9ddf184cc9a77cf441943a0fe9b7afa575",
"versionType": "git"
},
{
"lessThan": "5.9",
"status": "affected",
"version": "5.8.6",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/iommu/dma-iommu.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.9"
},
{
"lessThan": "5.9",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.110",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.52",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.6",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.270",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.221",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.188",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.157",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.110",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.52",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.6",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "5.9",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.8.6",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/dma: Check atomic pool allocation result directly\n\nThe non-blocking, non-coherent allocation path uses dma_alloc_from_pool(),\nwhich returns the allocated page and fills cpu_addr only on success.\n\nDo not rely on cpu_addr to detect allocation failure in this path. Check\nthe returned page directly before using it for the IOMMU mapping."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - iommu_dma_alloc() is reached from dma_alloc_attrs() on GFP_ATOMIC dma_alloc_coherent(); local entry points are VIDIOC_STREAMON scheduling mxc_jpeg_device_run()\u2192mxc_jpeg_alloc(), and USBDEVFS_SUBMITURB in proc_do_submiturb()\u2192usb_submit_urb(GFP_ATOMIC)\u2192dma_pool_alloc()\u2192pool_alloc_page(). No remote protocol message supplies the failed allocation.\nAC:L - The attacker drives dma_alloc_from_pool() failure by consuming the atomic gen_pool (repeated GFP_ATOMIC coherent allocs or a size larger than gen_pool_avail) then issues that ioctl; __dma_alloc_from_pool() does not store cpu_addr on failure, so a non-NULL leftover skips the old !cpu_addr check with no victim-side race.\nPR:L - mxc_jpeg_open() and proc_do_submiturb() have no capable() check; an unprivileged local user who can open the JPEG /dev/videoN or a usbfs device node reaches iommu_dma_alloc() without init-namespace root.\nUI:N - The attacker itself issues VIDIOC_QBUF/VIDIOC_STREAMON on its video fd or USBDEVFS_SUBMITURB on its usbfs fd; no separate user must mount, confirm, or plug a device.\nS:U - The leftover cpu_addr is used as a host kernel VA and page_to_phys(NULL) is mapped only in this device\u0027s iommu_dma domain via __iommu_dma_map(); that is in-kernel corruption, not a KVM/Xen escape or an extra translation into another VM\u0027s memory.\nC:H - iommu_dma_alloc() returns the uninitialized cpu_addr as the coherent buffer; later loads of that object (mxc_jpeg_config_dec_desc()/print_descriptor_info on slot_data.desc, or USB TD completion from a dma_pool block carved out of the wild page) disclose kernel memory through the leftover pointer.\nI:H - Callers store through that pointer: mxc_jpeg_config_dec_desc() writes desc-\u003eimgsize/stm_ctrl into jpeg-\u003eslot_data.desc, and pool_initialise_page() writes dma_block.next_block into page-\u003evaddr from the failed dma_alloc_from_pool(), a kernel write primitive.\nA:H - page_to_phys(NULL) followed by iommu_map() in __iommu_dma_map(), or a store/load through an unmapped leftover cpu_addr in mxc_jpeg_config_dec_desc() or pool_initialise_page(), oopses or panics the kernel."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T09:02:51.717Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/ac9cd0a669b8be5d178dbd471b0d68039dac58b5"
},
{
"url": "https://git.kernel.org/stable/c/db46cb9da83a507d86d2bb080bdb09c865da3d0a"
},
{
"url": "https://git.kernel.org/stable/c/d56c3f955b21e5764c1497e295a5b5d0b3a40470"
},
{
"url": "https://git.kernel.org/stable/c/06dffc96693083dda3412311406e558cf27f1574"
},
{
"url": "https://git.kernel.org/stable/c/a4ace31d732b657d774e31fb444c0c27d42c78e5"
},
{
"url": "https://git.kernel.org/stable/c/fb0b39287ba894dbdfac2901c51788b63f5c2291"
},
{
"url": "https://git.kernel.org/stable/c/8c486293ddd0af60991408149fc3e964ea888dc4"
},
{
"url": "https://git.kernel.org/stable/c/af95a0ebc0a0db0762be75f51eadf770bad01aaa"
}
],
"title": "iommu/dma: Check atomic pool allocation result directly",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-90388",
"datePublished": "2026-09-17T16:09:23.140Z",
"dateReserved": "2026-09-11T19:38:34.810Z",
"dateUpdated": "2026-10-19T09:02:51.717Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-90388",
"date": "2026-11-13",
"epss": "0.00169",
"percentile": "0.063"
},
"microsoft_vex": {
"current_release_date": "2026-10-22T01:12:01.000Z",
"cve": "CVE-2026-90388",
"id": "msrc_CVE-2026-90388",
"initial_release_date": "2026-09-19T01:18:24.000Z",
"product_status:fixed": "1",
"product_status:known_affected": "2",
"product_status:under_investigation": "1",
"source": "Microsoft CSAF VEX",
"status": "final",
"title": "iommu/dma: Check atomic pool allocation result directly",
"url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-90388.json",
"version": "6"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/iommu/dma-iommu.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ac9cd0a669b8be5d178dbd471b0d68039dac58b5",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "db46cb9da83a507d86d2bb080bdb09c865da3d0a",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "d56c3f955b21e5764c1497e295a5b5d0b3a40470",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "06dffc96693083dda3412311406e558cf27f1574",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "a4ace31d732b657d774e31fb444c0c27d42c78e5",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "fb0b39287ba894dbdfac2901c51788b63f5c2291",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "8c486293ddd0af60991408149fc3e964ea888dc4",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"lessThan": "af95a0ebc0a0db0762be75f51eadf770bad01aaa",
"status": "affected",
"version": "9420139f516d7fbc248ce17f35275cb005ed98ea",
"versionType": "git"
},
{
"status": "affected",
"version": "47184b9ddf184cc9a77cf441943a0fe9b7afa575",
"versionType": "git"
},
{
"lessThan": "5.9",
"status": "affected",
"version": "5.8.6",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/iommu/dma-iommu.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.9"
},
{
"lessThan": "5.9",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.110",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.52",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.6",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/dma: Check atomic pool allocation result directly\n\nThe non-blocking, non-coherent allocation path uses dma_alloc_from_pool(),\nwhich returns the allocated page and fills cpu_addr only on success.\n\nDo not rely on cpu_addr to detect allocation failure in this path. Check\nthe returned page directly before using it for the IOMMU mapping."
}
],
"id": "CVE-2026-90388",
"lastModified": "2026-10-19T09:19:32.843",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
}
]
},
"published": "2026-09-17T17:17:38.287",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/06dffc96693083dda3412311406e558cf27f1574"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/8c486293ddd0af60991408149fc3e964ea888dc4"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/a4ace31d732b657d774e31fb444c0c27d42c78e5"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/ac9cd0a669b8be5d178dbd471b0d68039dac58b5"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/af95a0ebc0a0db0762be75f51eadf770bad01aaa"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/d56c3f955b21e5764c1497e295a5b5d0b3a40470"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/db46cb9da83a507d86d2bb080bdb09c865da3d0a"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/fb0b39287ba894dbdfac2901c51788b63f5c2291"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
},
"redhat_vex": {
"aggregate_severity": "Moderate",
"current_release_date": "2026-11-06T01:42:31+00:00",
"cve": "CVE-2026-90388",
"id": "CVE-2026-90388",
"initial_release_date": "2026-09-17T00:00:00+00:00",
"product_status:known_affected": "161",
"product_status:known_not_affected": "42",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: iommu/dma: Check atomic pool allocation result directly",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-90388.json",
"version": "3"
}
}
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.