---
id: CVE-2026-90387
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  swiotlb: Preserve allocation virtual address for dynamic pools

  swiotlb_alloc_tlb() can allocate from the DMA atomic pool when a decrypted
  pool is needed from atomic co…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  swiotlb: Preserve allocation virtual address for dynamic pools

  swiotlb_alloc_tlb() can allocate from the DMA atomic pool when a decrypted
  pool is needed from atomic co…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 79636caad3618e2b38457f6e298c9b31ba82b489 <
    68bf3ebd8e7020dae58e8aa14c7d482738bff9a8
  - >-
    Linux >= 79636caad3618e2b38457f6e298c9b31ba82b489 <
    45507dcb0847e96add4455274b12df0eca6590b4
  - >-
    Linux >= 79636caad3618e2b38457f6e298c9b31ba82b489 <
    35e0103177826430b5df888b1506239d41e76ab5
  - >-
    Linux >= 79636caad3618e2b38457f6e298c9b31ba82b489 <
    c1f4d7763cdf1b9e0d35c14aa6f52d0512a36319
  - >-
    Linux >= 79636caad3618e2b38457f6e298c9b31ba82b489 <
    57d29044d0f29a76c6ec0c112c8c7371d5608dc7
  - Linux 6.6
published: '2026-09-17'
updated: '2026-09-18'
sourceUpdated: '2026-09-18T18:17:56.617'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-90387'
references:
  - url: 'https://git.kernel.org/stable/c/35e0103177826430b5df888b1506239d41e76ab5'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/45507dcb0847e96add4455274b12df0eca6590b4'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/57d29044d0f29a76c6ec0c112c8c7371d5608dc7'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/68bf3ebd8e7020dae58e8aa14c7d482738bff9a8'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/c1f4d7763cdf1b9e0d35c14aa6f52d0512a36319'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-90387.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-90387'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2536339'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-90387'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-90387'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-90387.mbox
tags:
  - nvd
  - cve.org
  - csaf
  - vex
  - red-hat
  - score-dispute
epss: 0.00163
epssPercentile: 0.05498
ingestedAt: '2026-09-17T16:21:47.804Z'
cwe:
  - CWE-763
scores:
  nvd: 7.8
  vendor: 5.5
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

swiotlb: Preserve allocation virtual address for dynamic pools

swiotlb_alloc_tlb() can allocate from the DMA atomic pool when a decrypted
pool is needed from atomic context. With CONFIG_DMA_DIRECT_REMAP, the
atomic pool is backed by remapped virtual addresses, which are not the same
as the direct-map addresses returned by phys_to_virt().

swiotlb_init_io_tlb_pool() currently reconstructs the pool virtual address
from the physical start address. For atomic-pool backed allocations this
stores the wrong address in pool->vaddr. Later, swiotlb_free_tlb() passes
that address to dma_free_from_pool(), which will fail to recognize the
chunk

Pass the virtual address returned by the allocation path into
swiotlb_init_io_tlb_pool(), and store that address in pool->vaddr. This
keeps the pool free path using the same virtual address as the allocator.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Low · affected: Red Hat Enterprise Linux 10, Red Hat Enterprise Linux 9, Red Hat OpenShift Container Platform 4 · no fix planned: Red Hat Enterprise Linux 10, Red Hat Enterprise Linux 9, Red Hat OpenShift Container Platform 4 · updated 2026-10-20 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-90387.json)
