diff options
author | Masami Hiramatsu <mhiramat@redhat.com> | 2009-01-06 17:41:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 18:59:20 -0500 |
commit | 017c39bdb1b3ac1da6db339474a77b528043c05a (patch) | |
tree | 1c5271ba125e67e5bf81e4e7a6507ae08253fce1 /kernel/kprobes.c | |
parent | 129415607845d4daea11ddcba706005c69dcb942 (diff) |
kprobes: add __kprobes to kprobe internal functions
Add __kprobes to kprobes internal functions for protecting from probing by
kprobes itself.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/kprobes.c')
-rw-r--r-- | kernel/kprobes.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 29e87921437d..a1e233a19586 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c | |||
@@ -410,7 +410,7 @@ void __kprobes recycle_rp_inst(struct kretprobe_instance *ri, | |||
410 | hlist_add_head(&ri->hlist, head); | 410 | hlist_add_head(&ri->hlist, head); |
411 | } | 411 | } |
412 | 412 | ||
413 | void kretprobe_hash_lock(struct task_struct *tsk, | 413 | void __kprobes kretprobe_hash_lock(struct task_struct *tsk, |
414 | struct hlist_head **head, unsigned long *flags) | 414 | struct hlist_head **head, unsigned long *flags) |
415 | { | 415 | { |
416 | unsigned long hash = hash_ptr(tsk, KPROBE_HASH_BITS); | 416 | unsigned long hash = hash_ptr(tsk, KPROBE_HASH_BITS); |
@@ -421,13 +421,15 @@ void kretprobe_hash_lock(struct task_struct *tsk, | |||
421 | spin_lock_irqsave(hlist_lock, *flags); | 421 | spin_lock_irqsave(hlist_lock, *flags); |
422 | } | 422 | } |
423 | 423 | ||
424 | static void kretprobe_table_lock(unsigned long hash, unsigned long *flags) | 424 | static void __kprobes kretprobe_table_lock(unsigned long hash, |
425 | unsigned long *flags) | ||
425 | { | 426 | { |
426 | spinlock_t *hlist_lock = kretprobe_table_lock_ptr(hash); | 427 | spinlock_t *hlist_lock = kretprobe_table_lock_ptr(hash); |
427 | spin_lock_irqsave(hlist_lock, *flags); | 428 | spin_lock_irqsave(hlist_lock, *flags); |
428 | } | 429 | } |
429 | 430 | ||
430 | void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags) | 431 | void __kprobes kretprobe_hash_unlock(struct task_struct *tsk, |
432 | unsigned long *flags) | ||
431 | { | 433 | { |
432 | unsigned long hash = hash_ptr(tsk, KPROBE_HASH_BITS); | 434 | unsigned long hash = hash_ptr(tsk, KPROBE_HASH_BITS); |
433 | spinlock_t *hlist_lock; | 435 | spinlock_t *hlist_lock; |
@@ -436,7 +438,7 @@ void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags) | |||
436 | spin_unlock_irqrestore(hlist_lock, *flags); | 438 | spin_unlock_irqrestore(hlist_lock, *flags); |
437 | } | 439 | } |
438 | 440 | ||
439 | void kretprobe_table_unlock(unsigned long hash, unsigned long *flags) | 441 | void __kprobes kretprobe_table_unlock(unsigned long hash, unsigned long *flags) |
440 | { | 442 | { |
441 | spinlock_t *hlist_lock = kretprobe_table_lock_ptr(hash); | 443 | spinlock_t *hlist_lock = kretprobe_table_lock_ptr(hash); |
442 | spin_unlock_irqrestore(hlist_lock, *flags); | 444 | spin_unlock_irqrestore(hlist_lock, *flags); |
@@ -762,7 +764,7 @@ static void __kprobes __unregister_kprobe_bottom(struct kprobe *p) | |||
762 | } | 764 | } |
763 | } | 765 | } |
764 | 766 | ||
765 | static int __register_kprobes(struct kprobe **kps, int num, | 767 | static int __kprobes __register_kprobes(struct kprobe **kps, int num, |
766 | unsigned long called_from) | 768 | unsigned long called_from) |
767 | { | 769 | { |
768 | int i, ret = 0; | 770 | int i, ret = 0; |
@@ -828,7 +830,7 @@ unsigned long __weak arch_deref_entry_point(void *entry) | |||
828 | return (unsigned long)entry; | 830 | return (unsigned long)entry; |
829 | } | 831 | } |
830 | 832 | ||
831 | static int __register_jprobes(struct jprobe **jps, int num, | 833 | static int __kprobes __register_jprobes(struct jprobe **jps, int num, |
832 | unsigned long called_from) | 834 | unsigned long called_from) |
833 | { | 835 | { |
834 | struct jprobe *jp; | 836 | struct jprobe *jp; |
@@ -990,7 +992,7 @@ static int __kprobes __register_kretprobe(struct kretprobe *rp, | |||
990 | return ret; | 992 | return ret; |
991 | } | 993 | } |
992 | 994 | ||
993 | static int __register_kretprobes(struct kretprobe **rps, int num, | 995 | static int __kprobes __register_kretprobes(struct kretprobe **rps, int num, |
994 | unsigned long called_from) | 996 | unsigned long called_from) |
995 | { | 997 | { |
996 | int ret = 0, i; | 998 | int ret = 0, i; |