---
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
tags:
  - nvd
  - cve.org
epss: 0.00175
epssPercentile: 0.06162
ingestedAt: '2026-09-17T16:21:47.804Z'
---

## 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.
