aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/kprobes.c
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@redhat.com>2009-01-06 17:41:51 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-06 18:59:20 -0500
commit017c39bdb1b3ac1da6db339474a77b528043c05a (patch)
tree1c5271ba125e67e5bf81e4e7a6507ae08253fce1 /kernel/kprobes.c
parent129415607845d4daea11ddcba706005c69dcb942 (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.c16
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
413void kretprobe_hash_lock(struct task_struct *tsk, 413void __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
424static void kretprobe_table_lock(unsigned long hash, unsigned long *flags) 424static 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
430void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags) 431void __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
439void kretprobe_table_unlock(unsigned long hash, unsigned long *flags) 441void __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
765static int __register_kprobes(struct kprobe **kps, int num, 767static 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
831static int __register_jprobes(struct jprobe **jps, int num, 833static 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
993static int __register_kretprobes(struct kretprobe **rps, int num, 995static 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;