Skip to content
OpenAdvisories
Unscored CVE-2022-49888 EUVD-2025-12882GHSA-w77p-v2rp-vmv8

arm64: entry: avoid kprobe recursion

Published May 1, 2025 · Updated Nov 5, 2026 · Assigned by Linux

Vendor: Linux Product: Linux 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.2 Package: linux-aws-6.5 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.2 Package: linux-azure-6.5 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-bluefield 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.2 Package: linux-gcp-6.5 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.2 Package: linux-hwe-6.5 Package: linux-hwe-edge Package: linux-ibm 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.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 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.5 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.5 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime 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.5 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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

arm64: entry: avoid kprobe recursion

The cortex_a76_erratum_1463225_debug_handler() function is called when
handling debug exceptions (and synchronous exceptions from BRK
instructions), and so is called when a probed function executes. If the
compiler does not inline cortex_a76_erratum_1463225_debug_handler(), it
can be probed.

If cortex_a76_erratum_1463225_debug_handler() is probed, any debug
exception or software breakpoint exception will result in recursive
exceptions leading to a stack overflow. This can be triggered with the
ftrace multiple_probes selftest, and as per the example splat below.

This is a regression caused by commit:

6459b8469753e9fe ("arm64: entry: consolidate Cortex-A76 erratum 1463225 workaround")

... which removed the NOKPROBE_SYMBOL() annotation associated with the
function.

My intent was that cortex_a76_erratum_1463225_debug_handler() would be
inlined into its caller, el1_dbg(), which is marked noinstr and cannot
be probed. Mark cortex_a76_erratum_1463225_debug_handler() as
__always_inline to ensure this.

Example splat prior to this patch (with recursive entries elided):

| # echo p cortex_a76_erratum_1463225_debug_handler > /sys/kernel/debug/tracing/kprobe_events
| # echo p do_el0_svc >> /sys/kernel/debug/tracing/kprobe_events
| # echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable
| Insufficient stack space to handle exception!
| ESR: 0x0000000096000047 -- DABT (current EL)
| FAR: 0xffff800009cefff0
| Task stack: [0xffff800009cf0000..0xffff800009cf4000]
| IRQ stack: [0xffff800008000000..0xffff800008004000]
| Overflow stack: [0xffff00007fbc00f0..0xffff00007fbc10f0]
| CPU: 0 PID: 145 Comm: sh Not tainted 6.0.0 #2
| Hardware name: linux,dummy-virt (DT)
| pstate: 604003c5 (nZCv DAIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
| pc : arm64_enter_el1_dbg+0x4/0x20
| lr : el1_dbg+0x24/0x5c
| sp : ffff800009cf0000
| x29: ffff800009cf0000 x28: ffff000002c74740 x27: 0000000000000000
| x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
| x23: 00000000604003c5 x22: ffff80000801745c x21: 0000aaaac95ac068
| x20: 00000000f2000004 x19: ffff800009cf0040 x18: 0000000000000000
| x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
| x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
| x11: 0000000000000010 x10: ffff800008c87190 x9 : ffff800008ca00d0
| x8 : 000000000000003c x7 : 0000000000000000 x6 : 0000000000000000
| x5 : 0000000000000000 x4 : 0000000000000000 x3 : 00000000000043a4
| x2 : 00000000f2000004 x1 : 00000000f2000004 x0 : ffff800009cf0040
| Kernel panic - not syncing: kernel stack overflow
| CPU: 0 PID: 145 Comm: sh Not tainted 6.0.0 #2
| Hardware name: linux,dummy-virt (DT)
| Call trace:
| dump_backtrace+0xe4/0x104
| show_stack+0x18/0x4c
| dump_stack_lvl+0x64/0x7c
| dump_stack+0x18/0x38
| panic+0x14c/0x338
| test_taint+0x0/0x2c
| panic_bad_stack+0x104/0x118
| handle_bad_stack+0x34/0x48
| __bad_stack+0x78/0x7c
| arm64_enter_el1_dbg+0x4/0x20
| el1h_64_sync_handler+0x40/0x98
| el1h_64_sync+0x64/0x68
| cortex_a76_erratum_1463225_debug_handler+0x0/0x34
...
| el1h_64_sync_handler+0x40/0x98
| el1h_64_sync+0x64/0x68
| cortex_a76_erratum_1463225_debug_handler+0x0/0x34
...
| el1h_64_sync_handler+0x40/0x98
| el1h_64_sync+0x64/0x68
| cortex_a76_erratum_1463225_debug_handler+0x0/0x34
| el1h_64_sync_handler+0x40/0x98
| el1h_64_sync+0x64/0x68
| do_el0_svc+0x0/0x28
| el0t_64_sync_handler+0x84/0xf0
| el0t_64_sync+0x18c/0x190
| Kernel Offset: disabled
| CPU features: 0x0080,00005021,19001080
| Memory Limit: none
| ---[ end Kernel panic - not syncing: kernel stack overflow ]---

With this patch, cortex_a76_erratum_1463225_debug_handler() is inlined
into el1_dbg(), and el1_dbg() cannot be probed:

| # echo p cortex_a76_erratum_1463225_debug_handler > /sys/kernel/debug/tracing/kprobe_events
| sh: write error: No such file or directory
| # grep -w cortex_a76_errat
---truncated---

Affected products

VendorProductAffectedFixed
Linux Linux 5.12 5.15.78

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.0.8-1 —
Debian 13 linux 6.0.8-1 —
Debian 12 linux 6.0.8-1 —
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1014.16 —
Ubuntu 24.04 LTS linux-realtime +1 No fix yet —
Ubuntu 22.04 LTS linux +1 5.15.0-60.66 —
Ubuntu 22.04 LTS linux-aws 5.15.0-1030.34 —
Ubuntu 22.04 LTS linux-azure 5.15.0-1033.40 —
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1033.40.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1029.36 —
Ubuntu 22.04 LTS linux-gke 5.15.0-1027.32 —
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1015.19 —
Ubuntu 22.04 LTS linux-ibm 5.15.0-1025.28 —
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1025.30 —
Ubuntu 22.04 LTS linux-kvm 5.15.0-1028.33 —
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1017.17 —
Ubuntu 22.04 LTS linux-oracle 5.15.0-1029.35 —
Ubuntu 22.04 LTS linux-raspi 5.15.0-1024.26 —
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1030.34~20.04.1 —
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1033.40~20.04.1 —
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1029.36~20.04.1 —
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 20.04 LTS linux-hwe-5.15 +1 5.15.0-60.66~20.04.1 —
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1025.30~20.04.1 —
Ubuntu 20.04 LTS linux-oracle-5.15 5.15.0-1029.35~20.04.1 —
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1029.33~20.04.1 —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
ReleasePackageFixed inAdvisory
SLES 15 SP5 kernel-64kb +6 5.14.21-150500.55.110.1 SUSE-SU-2025:02173-1
SLES 15 SP5 kernel-default-base 5.14.21-150500.55.110.1.150500.6.51.3 SUSE-SU-2025:02173-1
SLES 15 SP4 kernel-64kb +6 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLES 15 SP4 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
Show 11 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 15 SP5 kernel-default-base 5.14.21-150500.55.110.1.150500.6.51.3 SUSE-SU-2025:02173-1
SLES for SAP 15 SP5 kernel-docs +4 5.14.21-150500.55.110.1 SUSE-SU-2025:02173-1
SLES for SAP 15 SP4 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SLES for SAP 15 SP4 kernel-docs +4 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLE Micro 5.5 kernel-default-base 5.14.21-150500.55.110.1.150500.6.51.3 SUSE-SU-2025:02173-1
SLE Micro 5.5 kernel-rt +1 5.14.21-150500.13.97.1 SUSE-SU-2025:01966-1
SLE Micro 5.5 kernel-source +1 5.14.21-150500.55.110.1 SUSE-SU-2025:02173-1
SLE Micro 5.4 kernel-default 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLE Micro 5.4 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SLE Micro 5.4 kernel-rt +1 5.14.21-150400.15.121.1 SUSE-SU-2025:01918-1
SLE Micro 5.3 kernel-default 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLE Micro 5.3 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SLE Micro 5.3 kernel-rt +1 5.14.21-150400.15.121.1 SUSE-SU-2025:01918-1
SLE Live Patching 15 SP5 kernel-default 5.14.21-150500.55.110.1 SUSE-SU-2025:02173-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_27 1-150500.11.7.1 SUSE-SU-2025:02173-1
SLE Live Patching 15 SP4 kernel-default 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLE Live Patching 15 SP4 kernel-livepatch-SLE15-SP4_Update_41 1-150400.9.3.1 SUSE-SU-2025:02262-1
SLE HPC 15 SP5 kernel-64kb +5 5.14.21-150500.55.110.1 SUSE-SU-2025:02173-1
SLE HPC 15 SP5 kernel-default-base 5.14.21-150500.55.110.1.150500.6.51.3 SUSE-SU-2025:02173-1
SLE HPC 15 SP4 kernel-64kb +5 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SLE HPC 15 SP4 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SUSE Manager Server 4.3 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SUSE Manager Server 4.3 kernel-syms +3 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1
SUSE Manager Proxy 4.3 kernel-default-base 5.14.21-150400.24.167.1.150400.24.84.1 SUSE-SU-2025:02262-1
SUSE Manager Proxy 4.3 kernel-syms +2 5.14.21-150400.24.167.1 SUSE-SU-2025:02262-1

Advisories 4

References