diff options
author | Jean-Philippe Brucker <jean-philippe@linaro.org> | 2020-11-03 16:49:01 +0300 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2020-11-03 17:03:38 +0300 |
commit | 7ee31a3aa8f490c6507bc4294df6b70bed1c593e (patch) | |
tree | 901c9487d9137d2c88dcdb5f0e9100f323fc9e53 /arch/arm64/include/asm/kprobes.h | |
parent | 2a13c13b39a8aea4c69a31549e4cb0094f30103b (diff) | |
download | linux-7ee31a3aa8f490c6507bc4294df6b70bed1c593e.tar.xz |
arm64: kprobes: Use BRK instead of single-step when executing instructions out-of-line
Commit 36dadef23fcc ("kprobes: Init kprobes in early_initcall") enabled
using kprobes from early_initcall. Unfortunately at this point the
hardware debug infrastructure is not operational. The OS lock may still
be locked, and the hardware watchpoints may have unknown values when
kprobe enables debug monitors to single-step instructions.
Rather than using hardware single-step, append a BRK instruction after
the instruction to be executed out-of-line.
Fixes: 36dadef23fcc ("kprobes: Init kprobes in early_initcall")
Suggested-by: Will Deacon <will@kernel.org>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Link: https://lore.kernel.org/r/20201103134900.337243-1-jean-philippe@linaro.org
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'arch/arm64/include/asm/kprobes.h')
-rw-r--r-- | arch/arm64/include/asm/kprobes.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/kprobes.h b/arch/arm64/include/asm/kprobes.h index 97e511d645a2..8699ce30f587 100644 --- a/arch/arm64/include/asm/kprobes.h +++ b/arch/arm64/include/asm/kprobes.h @@ -16,7 +16,7 @@ #include <linux/percpu.h> #define __ARCH_WANT_KPROBES_INSN_SLOT -#define MAX_INSN_SIZE 1 +#define MAX_INSN_SIZE 2 #define flush_insn_slot(p) do { } while (0) #define kretprobe_blacklist_size 0 |