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 /include/linux/jump_label.h | |
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 'include/linux/jump_label.h')
-rw-r--r-- | include/linux/jump_label.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index de58656d28e0..b72cd9f92c2e 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h | |||
@@ -20,9 +20,10 @@ extern struct jump_entry __stop___jump_table[]; | |||
20 | 20 | ||
21 | extern void arch_jump_label_transform(struct jump_entry *entry, | 21 | extern void arch_jump_label_transform(struct jump_entry *entry, |
22 | enum jump_label_type type); | 22 | enum jump_label_type type); |
23 | extern void arch_jump_label_text_poke_early(jump_label_t addr); | ||
23 | extern void jump_label_update(unsigned long key, enum jump_label_type type); | 24 | extern void jump_label_update(unsigned long key, enum jump_label_type type); |
24 | extern void jump_label_apply_nops(struct module *mod); | 25 | extern void jump_label_apply_nops(struct module *mod); |
25 | extern void arch_jump_label_text_poke_early(jump_label_t addr); | 26 | extern int jump_label_text_reserved(void *start, void *end); |
26 | 27 | ||
27 | #define enable_jump_label(key) \ | 28 | #define enable_jump_label(key) \ |
28 | jump_label_update((unsigned long)key, JUMP_LABEL_ENABLE); | 29 | jump_label_update((unsigned long)key, JUMP_LABEL_ENABLE); |
@@ -53,6 +54,11 @@ static inline int jump_label_apply_nops(struct module *mod) | |||
53 | return 0; | 54 | return 0; |
54 | } | 55 | } |
55 | 56 | ||
57 | static inline int jump_label_text_reserved(void *start, void *end) | ||
58 | { | ||
59 | return 0; | ||
60 | } | ||
61 | |||
56 | #endif | 62 | #endif |
57 | 63 | ||
58 | #endif | 64 | #endif |