Commit e597c2984c64609c6e1e1ac803f00f7550705860
Committed by
Linus Torvalds
1 parent
f709b12234
Exists in
master
and in
7 other branches
[PATCH] kprobes: arch_remove_kprobe
Currently arch_remove_kprobes() is only implemented/required for x86_64 and powerpc. All other architecture like IA64, i386 and sparc64 implementes a dummy function which is being called from arch independent kprobes.c file. This patch removes the dummy functions and replaces it with #define arch_remove_kprobe(p, s) do { } while(0) Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 12 changed files with 12 additions and 18 deletions Side-by-side Diff
- arch/i386/kernel/kprobes.c
- arch/ia64/kernel/kprobes.c
- arch/powerpc/kernel/kprobes.c
- arch/sparc64/kernel/kprobes.c
- arch/x86_64/kernel/kprobes.c
- include/asm-i386/kprobes.h
- include/asm-ia64/kprobes.h
- include/asm-powerpc/kprobes.h
- include/asm-sparc64/kprobes.h
- include/asm-x86_64/kprobes.h
- include/linux/kprobes.h
- kernel/kprobes.c
arch/i386/kernel/kprobes.c
arch/ia64/kernel/kprobes.c
... | ... | @@ -467,10 +467,6 @@ |
467 | 467 | flush_icache_range(arm_addr, arm_addr + sizeof(bundle_t)); |
468 | 468 | } |
469 | 469 | |
470 | -void __kprobes arch_remove_kprobe(struct kprobe *p) | |
471 | -{ | |
472 | -} | |
473 | - | |
474 | 470 | /* |
475 | 471 | * We are resuming execution after a single step fault, so the pt_regs |
476 | 472 | * structure reflects the register state after we executed the instruction |
arch/powerpc/kernel/kprobes.c
... | ... | @@ -80,9 +80,11 @@ |
80 | 80 | (unsigned long) p->addr + sizeof(kprobe_opcode_t)); |
81 | 81 | } |
82 | 82 | |
83 | -void __kprobes arch_remove_kprobe(struct kprobe *p) | |
83 | +void __kprobes arch_remove_kprobe(struct kprobe *p, struct semaphore *s) | |
84 | 84 | { |
85 | + down(s); | |
85 | 86 | free_insn_slot(p->ainsn.insn); |
87 | + up(s); | |
86 | 88 | } |
87 | 89 | |
88 | 90 | static inline void prepare_singlestep(struct kprobe *p, struct pt_regs *regs) |
arch/sparc64/kernel/kprobes.c
arch/x86_64/kernel/kprobes.c
... | ... | @@ -220,9 +220,11 @@ |
220 | 220 | (unsigned long) p->addr + sizeof(kprobe_opcode_t)); |
221 | 221 | } |
222 | 222 | |
223 | -void __kprobes arch_remove_kprobe(struct kprobe *p) | |
223 | +void __kprobes arch_remove_kprobe(struct kprobe *p, struct semaphore *s) | |
224 | 224 | { |
225 | + down(s); | |
225 | 226 | free_insn_slot(p->ainsn.insn); |
227 | + up(s); | |
226 | 228 | } |
227 | 229 | |
228 | 230 | static inline void save_previous_kprobe(struct kprobe_ctlblk *kcb) |
include/asm-i386/kprobes.h
include/asm-ia64/kprobes.h
include/asm-powerpc/kprobes.h
include/asm-sparc64/kprobes.h
include/asm-x86_64/kprobes.h
... | ... | @@ -78,6 +78,7 @@ |
78 | 78 | local_irq_enable(); |
79 | 79 | } |
80 | 80 | |
81 | +extern void arch_remove_kprobe(struct kprobe *p, struct semaphore *s); | |
81 | 82 | extern int post_kprobe_handler(struct pt_regs *regs); |
82 | 83 | extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); |
83 | 84 | extern int kprobe_handler(struct pt_regs *regs); |
include/linux/kprobes.h
... | ... | @@ -152,7 +152,6 @@ |
152 | 152 | extern int arch_prepare_kprobe(struct kprobe *p); |
153 | 153 | extern void arch_arm_kprobe(struct kprobe *p); |
154 | 154 | extern void arch_disarm_kprobe(struct kprobe *p); |
155 | -extern void arch_remove_kprobe(struct kprobe *p); | |
156 | 155 | extern int arch_init_kprobes(void); |
157 | 156 | extern void show_registers(struct pt_regs *regs); |
158 | 157 | extern kprobe_opcode_t *get_insn_slot(void); |