CVE-2026-90388 (GCVE-0-2026-90388)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:09 – Updated: 2026-09-18 17:55
VLAI
Title
iommu/dma: Check atomic pool allocation result directly
Summary
In the Linux kernel, the following vulnerability has been resolved: iommu/dma: Check atomic pool allocation result directly The non-blocking, non-coherent allocation path uses dma_alloc_from_pool(), which returns the allocated page and fills cpu_addr only on success. Do not rely on cpu_addr to detect allocation failure in this path. Check the returned page directly before using it for the IOMMU mapping.
Impacted products
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 Create a notification for this product.
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-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "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-rc1",
              "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-rc1",
                  "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-09-18T17:55:02.646Z",
        "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-09-18T17:55:02.646Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90388",
      "date": "2026-09-29",
      "epss": "0.00176",
      "percentile": "0.0639"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-23T02:22:18.000Z",
      "cve": "CVE-2026-90388",
      "id": "msrc_CVE-2026-90388",
      "initial_release_date": "2026-09-19T01:18:24.000Z",
      "product_status:known_affected": "2",
      "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": "2"
    },
    "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-rc1",
                    "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-09-18T18:17:56.770",
        "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"
      }
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-22T16:29:05Z",
      "cve": "CVE-2026-90388",
      "id": "CVE-2026-90388",
      "initial_release_date": "2026-09-22T16:29:05Z",
      "product_status:known_affected": "254",
      "product_status:known_not_affected": "93",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-90388",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-90388.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

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.

Loading…

Loading…

Loading…

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.


Loading…