diff options
author | Jason Baron <jbaron@redhat.com> | 2010-09-17 11:09:08 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-09-22 16:30:46 -0400 |
commit | 4c3ef6d79328c0e23ade60cbfc8d496123a6855c (patch) | |
tree | 4a28260548ff4ad507d12716d6cdaa6bc0451a87 /kernel/kprobes.c | |
parent | e0cf0cd49632552f063fb3ae58691946da45fb2e (diff) |
jump label: Add jump_label_text_reserved() to reserve jump points
Add a jump_label_text_reserved(void *start, void *end), so that other
pieces of code that want to modify kernel text, can first verify that
jump label has not reserved the instruction.
Acked-by: Masami Hiramatsu <mhiramat@redhat.com>
Signed-off-by: Jason Baron <jbaron@redhat.com>
LKML-Reference: <06236663a3a7b1c1f13576bb9eccb6d9c17b7bfe.1284733808.git.jbaron@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/kprobes.c')
-rw-r--r-- | kernel/kprobes.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 18904e42a918..ec4210c6501e 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c | |||
@@ -1147,7 +1147,8 @@ int __kprobes register_kprobe(struct kprobe *p) | |||
1147 | preempt_disable(); | 1147 | preempt_disable(); |
1148 | if (!kernel_text_address((unsigned long) p->addr) || | 1148 | if (!kernel_text_address((unsigned long) p->addr) || |
1149 | in_kprobes_functions((unsigned long) p->addr) || | 1149 | in_kprobes_functions((unsigned long) p->addr) || |
1150 | ftrace_text_reserved(p->addr, p->addr)) { | 1150 | ftrace_text_reserved(p->addr, p->addr) || |
1151 | jump_label_text_reserved(p->addr, p->addr)) { | ||
1151 | preempt_enable(); | 1152 | preempt_enable(); |
1152 | return -EINVAL; | 1153 | return -EINVAL; |
1153 | } | 1154 | } |