[PATCH v2 0/6] arm64: Fix instrumentation escapes from noinstr path

From: Jisheng Zhang

Date: Mon Nov 09 2026 - 07:07:12 EST


Code marked with noinstr can only safely call other noinstr or
__always_inline functions. When reading arm64 source code, I found
necessary noinstr markers is missing somewhere. So I asked AI to scan
the arm64, this series is the result.

Since v1:
Mainly address sashiko review comments:
- add always inline to per cpu helpers
- use tif_test_bit() instead of test_thread_flag() in sme_enter_from_user_mode
and sme_exit_to_user_mode
- a new patch to mark kasan_hw_tags_enabled always inlined
- a new patch to Disable branch profiling for architecture library code

Jisheng Zhang (6):
arm64: percpu: Always inline helpers used by noinstr code
arm64: entry: Always inline helpers used by non-instrumentable paths
kasan: Always inline kasan_hw_tags_enabled()
arm64: stacktrace: Always inline internal stack boundary helpers
arm64: lib: Disable branch profiling for architecture library code
arm64: alternatives: Make branch and ADRP offset helpers noinst

arch/arm64/include/asm/cpufeature.h | 8 +--
arch/arm64/include/asm/entry-common.h | 2 +-
arch/arm64/include/asm/fpsimd.h | 8 +--
arch/arm64/include/asm/mte-kasan.h | 4 +-
arch/arm64/include/asm/mte.h | 10 ++--
arch/arm64/include/asm/percpu.h | 18 +++----
arch/arm64/include/asm/stacktrace.h | 16 +++---
arch/arm64/include/asm/stacktrace/common.h | 12 ++---
arch/arm64/lib/Makefile | 4 ++
arch/arm64/lib/insn.c | 57 ++++++++++++++--------
include/linux/kasan-enabled.h | 4 +-
11 files changed, 82 insertions(+), 61 deletions(-)

--
2.55.0