diff --git a/arch/arm64/kernel/kprobes-arm64.c b/arch/arm64/kernel/kprobes-arm64.c index 28b9c5b..36b4ea5 100644 --- a/arch/arm64/kernel/kprobes-arm64.c +++ b/arch/arm64/kernel/kprobes-arm64.c @@ -127,7 +127,9 @@ is_probed_address_atomic(kprobe_opcode_t *scan_start, kprobe_opcode_t *scan_end) * atomic region starts from exclusive load and ends with * exclusive store. */ - if (aarch64_insn_is_store_ex(le32_to_cpu(*scan_start))) + if ((le32_to_cpu(*scan_start) & 0xffc07fff) == 0xa9807bfd) + return false; + else if (aarch64_insn_is_store_ex(le32_to_cpu(*scan_start))) return false; else if (aarch64_insn_is_load_ex(le32_to_cpu(*scan_start))) return true;