diff options
author | Wang Nan <wangnan0@huawei.com> | 2015-01-05 19:29:25 +0800 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2015-01-13 16:10:15 +0000 |
commit | a0266c214fab21371a499e6ab1c9385cc6589189 (patch) | |
tree | 69accee3d0fdc9ae9a0c3c683a7ed87497e61a81 /arch/arm/include | |
parent | 6624cf651f1a14363d0385f36dc255d304ac7ebb (diff) | |
download | blackbird-op-linux-a0266c214fab21371a499e6ab1c9385cc6589189.tar.gz blackbird-op-linux-a0266c214fab21371a499e6ab1c9385cc6589189.zip |
ARM: kprobes: disallow probing stack consuming instructions
This patch prohibits probing instructions for which the stack
requirements are unable to be determined statically. Some test cases
are found not work again after the modification, this patch also
removes them.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Reviewed-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/kprobes.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/probes.h | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/include/asm/kprobes.h b/arch/arm/include/asm/kprobes.h index 49fa0dfaad33..56f9ac68fbd1 100644 --- a/arch/arm/include/asm/kprobes.h +++ b/arch/arm/include/asm/kprobes.h @@ -22,7 +22,6 @@ #define __ARCH_WANT_KPROBES_INSN_SLOT #define MAX_INSN_SIZE 2 -#define MAX_STACK_SIZE 64 /* 32 would probably be OK */ #define flush_insn_slot(p) do { } while (0) #define kretprobe_blacklist_size 0 diff --git a/arch/arm/include/asm/probes.h b/arch/arm/include/asm/probes.h index 6026deb28794..cd9e81588d83 100644 --- a/arch/arm/include/asm/probes.h +++ b/arch/arm/include/asm/probes.h @@ -19,6 +19,8 @@ #ifndef _ASM_PROBES_H #define _ASM_PROBES_H +#ifndef __ASSEMBLY__ + typedef u32 probes_opcode_t; struct arch_probes_insn; @@ -41,4 +43,14 @@ struct arch_probes_insn { int stack_space; }; +#endif /* __ASSEMBLY__ */ + +/* + * We assume one instruction can consume at most 64 bytes stack, which is + * 'push {r0-r15}'. Instructions consume more or unknown stack space like + * 'str r0, [sp, #-80]' and 'str r0, [sp, r1]' should be prohibit to probe. + * Both kprobe and jprobe use this macro. + */ +#define MAX_STACK_SIZE 64 + #endif |