Skip to content
OpenAdvisories
High · 7.8 CVE-2025-38670 EUVD-2025-25531GHSA-6v6p-g835-47x6

arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()

Published Aug 22, 2025 · Updated Aug 5, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.14 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.14 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.14 Package: linux-azure-fde-6.2 Package: linux-azure-fde-6.8 Package: linux-azure-fips Package: linux-azure-nvidia Package: linux-azure-nvidia-6.14 Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.14 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-6.8 Package: linux-intel Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.14 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.14 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.14 Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.14 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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

arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()

`cpu_switch_to()` and `call_on_irq_stack()` manipulate SP to change
to different stacks along with the Shadow Call Stack if it is enabled.
Those two stack changes cannot be done atomically and both functions
can be interrupted by SErrors or Debug Exceptions which, though unlikely,
is very much broken : if interrupted, we can end up with mismatched stacks
and Shadow Call Stack leading to clobbered stacks.

In `cpu_switch_to()`, it can happen when SP_EL0 points to the new task,
but x18 stills points to the old task's SCS. When the interrupt handler
tries to save the task's SCS pointer, it will save the old task
SCS pointer (x18) into the new task struct (pointed to by SP_EL0),
clobbering it.

In `call_on_irq_stack()`, it can happen when switching from the task stack
to the IRQ stack and when switching back. In both cases, we can be
interrupted when the SCS pointer points to the IRQ SCS, but SP points to
the task stack. The nested interrupt handler pushes its return addresses
on the IRQ SCS. It then detects that SP points to the task stack,
calls `call_on_irq_stack()` and clobbers the task SCS pointer with
the IRQ SCS pointer, which it will also use !

This leads to tasks returning to addresses on the wrong SCS,
or even on the IRQ SCS, triggering kernel panics via CONFIG_VMAP_STACK
or FPAC if enabled.

This is possible on a default config, but unlikely.
However, when enabling CONFIG_ARM64_PSEUDO_NMI, DAIF is unmasked and
instead the GIC is responsible for filtering what interrupts the CPU
should receive based on priority.
Given the goal of emulating NMIs, pseudo-NMIs can be received by the CPU
even in `cpu_switch_to()` and `call_on_irq_stack()`, possibly *very*
frequently depending on the system configuration and workload, leading
to unpredictable kernel panics.

Completely mask DAIF in `cpu_switch_to()` and restore it when returning.
Do the same in `call_on_irq_stack()`, but restore and mask around
the branch.
Mask DAIF even if CONFIG_SHADOW_CALL_STACK is not enabled for consistency
of behaviour between all configurations.

Introduce and use an assembly macro for saving and masking DAIF,
as the existing one saves but only masks IF.

Affected products

VendorProductAffectedFixed
Linux Linux 5.10.180 – < 5.10.210, 5.15.111 – < 5.15.190, 6.1.28 – < 6.1.149, 6.2.15 – < 6.3, 6.3 5.10.210

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.16.3-1 —
Debian 13 linux 6.12.41-1 —
Debian 12 linux 6.1.153-1 DSA-6009-1
Debian 11 linux-6.1 6.1.153-1~deb11u1 DLA-4328-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 24.04 LTS linux-bluefield 6.8.0-1016.20 —
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1081.83 —
Ubuntu 25.10 linux-azure-fde No fix yet —
Ubuntu 24.04 LTS linux 6.8.0-100.100 USN-8028-1
Ubuntu 24.04 LTS linux-aws +1 6.8.0-1046.49 USN-8028-5
Ubuntu 24.04 LTS linux-aws-6.14 +2 6.14.0-1017.17~24.04.1 USN-7934-1, USN-7879-3
Ubuntu 24.04 LTS linux-azure 6.8.0-1046.52 USN-8074-1
Ubuntu 24.04 LTS linux-azure-fde 6.8.0-1046.53 —
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1039.42 —
Ubuntu 24.04 LTS linux-gcp 6.8.0-1047.50 USN-8031-3
Ubuntu 24.04 LTS linux-gcp-6.14 6.14.0-1020.21~24.04.1 USN-7879-4
Ubuntu 24.04 LTS linux-gke 6.8.0-1043.48 USN-8031-3
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1030.33 USN-8028-5
Ubuntu 24.04 LTS linux-hwe-6.14 6.14.0-36.36~24.04.1 USN-7879-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1044.44 USN-8028-8
Ubuntu 24.04 LTS linux-intel +12 No fix yet —
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-100.100.1 USN-8052-1
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1046.49.1 USN-8028-7
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1020.20 —
Ubuntu 24.04 LTS linux-oem-6.14 6.14.0-1016.16 USN-7880-1
Ubuntu 24.04 LTS linux-oracle 6.8.0-1043.44 USN-8028-5
Ubuntu 24.04 LTS linux-raspi 6.8.0-1047.51 USN-8028-1
Ubuntu 24.04 LTS linux-riscv-6.14 6.14.0-36.36.1~24.04.1 —
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1023.24 USN-8052-2
Ubuntu 22.04 LTS linux +1 5.15.0-163.173 USN-7909-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1097.104 USN-7909-1
Ubuntu 22.04 LTS linux-aws-6.8 +1 6.8.0-1046.49~22.04.1 USN-8028-5
Ubuntu 22.04 LTS linux-azure 5.15.0-1101.110 USN-7910-2
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1051.57~22.04.1 USN-8126-1
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1102.111.1 —
Ubuntu 22.04 LTS linux-azure-fde-6.8 6.8.0-1046.53~22.04.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1097.106 USN-7909-4
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1047.50~22.04.2 USN-8031-1
Ubuntu 22.04 LTS linux-gke 5.15.0-1093.99 USN-7909-4
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1080.88 USN-7909-4
Ubuntu 22.04 LTS linux-hwe-6.8 +1 6.8.0-100.100~22.04.1 USN-8028-6
Ubuntu 22.04 LTS linux-ibm +1 5.15.0-1091.94 USN-7909-5, USN-7909-1
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1044.44~22.04.1 USN-8028-8
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1092.98 USN-7909-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1089.94 USN-7933-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-100.100.1~22.04.1 USN-8028-6
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1092.93 USN-7909-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1049.49 USN-7909-1
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1038.38 USN-7909-1
Ubuntu 22.04 LTS linux-oracle 5.15.0-1094.100 USN-7909-1
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1043.44~22.04.1 USN-8028-5
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1061.65 USN-7909-1
Show 9 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2037.38 USN-8028-3
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1041.42 USN-8028-3
Ubuntu Pro Realtime 24.04 LTS linux-realtime-6.14 6.14.0-1016.16~24.04.1 USN-7879-2
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1089.91 USN-7909-2
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1096.105 USN-7909-2
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1041.42~22.04.1 USN-8028-2
Ubuntu Pro FIPS-updates 24.04 LTS linux-aws-fips 6.8.0-1046.49+fips1 USN-8028-4
Ubuntu Pro FIPS-updates 24.04 LTS linux-azure-fips 6.8.0-1046.52+fips1 USN-8074-2
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-100.100+fips1 USN-8028-4
Ubuntu Pro FIPS-updates 24.04 LTS linux-gcp-fips 6.8.0-1047.50+fips1 USN-8031-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1097.104+fips1 USN-7909-3
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1101.110+fips1 USN-7910-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-163.173+fips1 USN-7909-3
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1097.106+fips1 USN-7909-3
Ubuntu Pro FIPS-preview 22.04 LTS linux-aws-fips +2 No fix yet —
Ubuntu Pro 20.04 LTS linux-aws-5.15 5.15.0-1097.104~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-azure-5.15 5.15.0-1102.111~20.04.1 USN-7938-1
Ubuntu Pro 20.04 LTS linux-gcp-5.15 5.15.0-1097.106~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-hwe-5.15 +1 5.15.0-163.173~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-ibm-5.15 5.15.0-1091.94~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-intel-iotg-5.15 5.15.0-1092.98~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1049.49~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-oracle-5.15 5.15.0-1094.100~20.04.1 USN-7909-1
Ubuntu Pro 20.04 LTS linux-riscv-5.15 5.15.0-1092.96~20.04.1 —
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +6 6.4.0-150700.53.16.1 SUSE-SU-2025:03290-1
SLES 15 SP7 kernel-azure +1 6.4.0-150700.20.15.2 SUSE-SU-2025:03633-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.16.1.150700.17.11.2 SUSE-SU-2025:03290-1
SLES 15 SP7 kernel-syms-azure 6.4.0-150700.20.15.1 SUSE-SU-2025:03633-1
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.70.1 SUSE-SU-2025:03301-1
SLES 15 SP6 kernel-azure +2 6.4.0-150600.8.52.1 SUSE-SU-2025:03634-1
SLES 15 SP6 kernel-coco +3 6.4.0-15061.32.coco15sp6.1 SUSE-SU-2025:03602-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.70.1.150600.12.30.2 SUSE-SU-2025:03301-1
Show 9 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 16.0 kernel-64kb +7 6.12.0-160000.6.1 SUSE-SU-2025:21139-1
SLES for SAP 16.0 kernel-default-base 6.12.0-160000.6.1.160000.2.4 SUSE-SU-2025:21139-1
SLES 16.0 kernel-64kb +7 6.12.0-160000.6.1 SUSE-SU-2025:21179-1, SUSE-SU-2025:21139-1
SLES 16.0 kernel-default-base 6.12.0-160000.6.1.160000.2.4 SUSE-SU-2025:21139-1
SLE Micro 6.2 kernel-default-base 6.12.0-160000.6.1.160000.2.4 SUSE-SU-2025:21074-1
SLE Micro 6.2 kernel-rt +5 6.12.0-160000.6.1 SUSE-SU-2026:20560-1, SUSE-SU-2025:21074-1
SLE Micro 6.1 kernel-default-base 6.4.0-34.1.21.11 SUSE-SU-2025:20669-1
SLE Micro 6.1 kernel-rt +1 6.4.0-36.1 SUSE-SU-2025:20756-1
SLE Micro 6.1 kernel-source +2 6.4.0-34.1 SUSE-SU-2025:20669-1
SLE Micro 6.0 kernel-default-base 6.4.0-34.1.21.11 SUSE-SU-2025:20653-1
SLE Micro 6.0 kernel-rt +1 6.4.0-36.1 SUSE-SU-2025:20739-1
SLE Micro 6.0 kernel-source +2 6.4.0-34.1 SUSE-SU-2025:20653-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.16.1 SUSE-SU-2025:03290-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7-RT_Update_4 1-150700.1.3.2 SUSE-SU-2025:03382-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_4 1-150700.15.3.2 SUSE-SU-2025:03290-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.70.1 SUSE-SU-2025:03301-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_15 1-150600.1.3.1 SUSE-SU-2025:03272-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_15 1-150600.13.3.2 SUSE-SU-2025:03301-1
SUSE Real Time Module 15 SP7 kernel-rt +2 6.4.0-150700.7.16.1 SUSE-SU-2025:03382-1
SUSE Real Time Module 15 SP6 kernel-rt +3 6.4.0-150600.10.52.1 SUSE-SU-2025:03272-1
ReleasePackageFixed inAdvisory
openSUSE Leap 16.0 kernel-default-base 6.12.0-160000.6.1.160000.2.4 openSUSE-SU-2025:20081-1
openSUSE Leap 16.0 kernel-rt +10 6.12.0-160000.6.1 openSUSE-SU-2025:20081-1
openSUSE Leap 15.6 dtb-aarch64 +10 6.4.0-150600.23.70.1 SUSE-SU-2025:03301-1
openSUSE Leap 15.6 kernel-azure +2 6.4.0-150600.8.52.1 SUSE-SU-2025:03634-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.70.1.150600.12.30.2 SUSE-SU-2025:03301-1
openSUSE Leap 15.6 kernel-rt +3 6.4.0-150600.10.52.1 SUSE-SU-2025:03272-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.12.46-66.121 +1 1:1.0-0.amzn2023 ALAS2023-2025-1208, ALAS2023-2025-1186
Amazon Linux 2023 perf +14 1:6.1.150-174.273.amzn2023 ALAS2023-2025-1186
Amazon Linux 2023 perf6.12 +14 1:6.12.46-66.121.amzn2023 ALAS2023-2025-1208

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.104.2-1 —
Azure Linux 2 (CBL-Mariner) kernel 5.15.200.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-104.43.4.2.el10uek ELSA-2025-20662
Oracle Linux 8 bpftool +18 5.15.0-314.193.5.3.el9uek ELSA-2025-25757

Advisories 50

References