[PATCH 20/38] arm64: probes: Reject stepping over ALLINT

Vladimir Murzin vladimir.murzin at arm.com
Mon Sep 14 03:20:44 PDT 2026


ALLINT instructions are not safe for probing. Both the register and
immediate forms of MSR for ALLINT are currently rejected because they
match aarch64_insn_is_msr_{imm,reg}(). However, MRS instructions
accessing ALLINT need to be rejected explicitly.

Signed-off-by: Vladimir Murzin <vladimir.murzin at arm.com>
---
 arch/arm64/include/asm/insn.h          |  1 +
 arch/arm64/kernel/probes/decode-insn.c | 11 +++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/include/asm/insn.h b/arch/arm64/include/asm/insn.h
index 1ce75a442638..0a81b5feb2ed 100644
--- a/arch/arm64/include/asm/insn.h
+++ b/arch/arm64/include/asm/insn.h
@@ -118,6 +118,7 @@ enum aarch64_insn_special_register {
 	AARCH64_INSN_SPCLREG_SP_EL0	= 0xC208,
 	AARCH64_INSN_SPCLREG_SPSEL	= 0xC210,
 	AARCH64_INSN_SPCLREG_CURRENTEL	= 0xC212,
+	AARCH64_INSN_SPCLREG_ALLINT	= 0xC218,
 	AARCH64_INSN_SPCLREG_DAIF	= 0xDA11,
 	AARCH64_INSN_SPCLREG_NZCV	= 0xDA10,
 	AARCH64_INSN_SPCLREG_FPCR	= 0xDA20,
diff --git a/arch/arm64/kernel/probes/decode-insn.c b/arch/arm64/kernel/probes/decode-insn.c
index 4137cc5ef031..a98d9d30fb4a 100644
--- a/arch/arm64/kernel/probes/decode-insn.c
+++ b/arch/arm64/kernel/probes/decode-insn.c
@@ -36,11 +36,14 @@ static bool __kprobes aarch64_insn_is_steppable(u32 insn)
 		/*
 		 * The MRS instruction may not return a correct value when
 		 * executing in the single-stepping environment. We do make one
-		 * exception, for reading the DAIF bits.
+		 * exception, for reading the DAIF and ALLINT bits.
 		 */
-		if (aarch64_insn_is_mrs(insn))
-			return aarch64_insn_extract_system_reg(insn)
-			     != AARCH64_INSN_SPCLREG_DAIF;
+		if (aarch64_insn_is_mrs(insn)) {
+			u32 sysreg = aarch64_insn_extract_system_reg(insn);
+
+			return (sysreg != AARCH64_INSN_SPCLREG_DAIF) &&
+			       (sysreg != AARCH64_INSN_SPCLREG_ALLINT);
+		}
 
 		/*
 		 * The HINT instruction is steppable only if it is in whitelist
-- 
2.34.1




More information about the linux-arm-kernel mailing list