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

  arm64/efi: Avoid voluntary preemption with efi_mm installed

  Gus reports a bad kernel memory access when using software PAN
  (CONFIG_ARM64_SW_TTBR0_PAN=y) on a machine w…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  arm64/efi: Avoid voluntary preemption with efi_mm installed

  Gus reports a bad kernel memory access when using software PAN
  (CONFIG_ARM64_SW_TTBR0_PAN=y) on a machine w…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= a5baf582f4c026c25a206ac121bceade926aec74 <
    829539c4a650544cb8e5e8690f2c2d0aa2c0e298
  - >-
    Linux >= a5baf582f4c026c25a206ac121bceade926aec74 <
    e98a9d0146372b046d863164025a66ab4488b972
  - Linux 6.19
published: '2026-09-17'
updated: '2026-09-17'
sourceUpdated: '2026-09-17T17:17:16.430'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-90212'
references:
  - url: 'https://git.kernel.org/stable/c/829539c4a650544cb8e5e8690f2c2d0aa2c0e298'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e98a9d0146372b046d863164025a66ab4488b972'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-17T16:21:47.857Z'
epss: 0.00155
epssPercentile: 0.05074
---

## Overview

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

arm64/efi: Avoid voluntary preemption with efi_mm installed

Gus reports a bad kernel memory access when using software PAN
(CONFIG_ARM64_SW_TTBR0_PAN=y) on a machine with support for EFI runtime
services:

  Unable to handle kernel access to user memory outside uaccess routines
    at virtual address 00000000f322ff30
  Mem abort info:
    ESR = 0x0000000096000004
    FSC = 0x04: level 0 translation fault
  Internal error: Oops: 0000000096000004 [#1]  SMP
  Workqueue: efi_rts_wq efi_call_rts
  pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  pc : efi_call_rts+0xd8/0x288
  Call trace:
   efi_call_rts+0xd8/0x288 (P)
   process_one_work+0x178/0x4f8
   worker_thread+0x194/0x328

This is because the fpsimd context management code called from
__efi_fpsimd_begin() can preempt voluntarily, returning later to the EFI
code with an incorrect value for TTBR0_EL1 thanks to the deferred mm
switching used by the software PAN implementation.

Since EFI runtime services cannot preempt voluntarily and because the
fpsimd switching code does not rely on the TTBR0_EL1 mappings, simply
reorder the fpsimd switch so that it occurs before we change the
page-table.

## Remediation

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