mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-13 22:14:20 +08:00
7ee31a3aa8
Commit36dadef23f
("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:36dadef23f
("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>
32 lines
889 B
C
32 lines
889 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*/
|
|
|
|
#ifndef __ASM_BRK_IMM_H
|
|
#define __ASM_BRK_IMM_H
|
|
|
|
/*
|
|
* #imm16 values used for BRK instruction generation
|
|
* 0x004: for installing kprobes
|
|
* 0x005: for installing uprobes
|
|
* 0x006: for kprobe software single-step
|
|
* Allowed values for kgdb are 0x400 - 0x7ff
|
|
* 0x100: for triggering a fault on purpose (reserved)
|
|
* 0x400: for dynamic BRK instruction
|
|
* 0x401: for compile time BRK instruction
|
|
* 0x800: kernel-mode BUG() and WARN() traps
|
|
* 0x9xx: tag-based KASAN trap (allowed values 0x900 - 0x9ff)
|
|
*/
|
|
#define KPROBES_BRK_IMM 0x004
|
|
#define UPROBES_BRK_IMM 0x005
|
|
#define KPROBES_BRK_SS_IMM 0x006
|
|
#define FAULT_BRK_IMM 0x100
|
|
#define KGDB_DYN_DBG_BRK_IMM 0x400
|
|
#define KGDB_COMPILED_DBG_BRK_IMM 0x401
|
|
#define BUG_BRK_IMM 0x800
|
|
#define KASAN_BRK_IMM 0x900
|
|
#define KASAN_BRK_MASK 0x0ff
|
|
|
|
#endif
|