diff options
author | Masami Hiramatsu <mhiramat@redhat.com> | 2009-04-06 22:01:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-07 11:31:08 -0400 |
commit | 8f9b15286a8ea49e997e845d02d357ed33ebd090 (patch) | |
tree | e6d2905679a938a92982ff48994f1623c6a87031 | |
parent | de5bd88d5a5cce3cacea904d3503e5ebdb3852a2 (diff) |
kprobes: support kretprobe and jprobe per-probe disabling
Add disable/enable_kretprobe() and disable/enable_jprobe().
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>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | Documentation/kprobes.txt | 16 | ||||
-rw-r--r-- | include/linux/kprobes.h | 17 |
2 files changed, 27 insertions, 6 deletions
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index f609af242d6c..1e7a769a10f9 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt | |||
@@ -365,21 +365,25 @@ probes) in the specified array, they clear the addr field of those | |||
365 | incorrect probes. However, other probes in the array are | 365 | incorrect probes. However, other probes in the array are |
366 | unregistered correctly. | 366 | unregistered correctly. |
367 | 367 | ||
368 | 4.7 disable_kprobe | 368 | 4.7 disable_*probe |
369 | 369 | ||
370 | #include <linux/kprobes.h> | 370 | #include <linux/kprobes.h> |
371 | int disable_kprobe(struct kprobe *kp); | 371 | int disable_kprobe(struct kprobe *kp); |
372 | int disable_kretprobe(struct kretprobe *rp); | ||
373 | int disable_jprobe(struct jprobe *jp); | ||
372 | 374 | ||
373 | Temporarily disables the specified kprobe. You can enable it again by using | 375 | Temporarily disables the specified *probe. You can enable it again by using |
374 | enable_kprobe(). You must specify the kprobe which has been registered. | 376 | enable_*probe(). You must specify the probe which has been registered. |
375 | 377 | ||
376 | 4.8 enable_kprobe | 378 | 4.8 enable_*probe |
377 | 379 | ||
378 | #include <linux/kprobes.h> | 380 | #include <linux/kprobes.h> |
379 | int enable_kprobe(struct kprobe *kp); | 381 | int enable_kprobe(struct kprobe *kp); |
382 | int enable_kretprobe(struct kretprobe *rp); | ||
383 | int enable_jprobe(struct jprobe *jp); | ||
380 | 384 | ||
381 | Enables kprobe which has been disabled by disable_kprobe(). You must specify | 385 | Enables *probe which has been disabled by disable_*probe(). You must specify |
382 | the kprobe which has been registered. | 386 | the probe which has been registered. |
383 | 387 | ||
384 | 5. Kprobes Features and Limitations | 388 | 5. Kprobes Features and Limitations |
385 | 389 | ||
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index 1071cfddddc9..bcd9c07848be 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h | |||
@@ -371,4 +371,21 @@ static inline int enable_kprobe(struct kprobe *kp) | |||
371 | return -ENOSYS; | 371 | return -ENOSYS; |
372 | } | 372 | } |
373 | #endif /* CONFIG_KPROBES */ | 373 | #endif /* CONFIG_KPROBES */ |
374 | static inline int disable_kretprobe(struct kretprobe *rp) | ||
375 | { | ||
376 | return disable_kprobe(&rp->kp); | ||
377 | } | ||
378 | static inline int enable_kretprobe(struct kretprobe *rp) | ||
379 | { | ||
380 | return enable_kprobe(&rp->kp); | ||
381 | } | ||
382 | static inline int disable_jprobe(struct jprobe *jp) | ||
383 | { | ||
384 | return disable_kprobe(&jp->kp); | ||
385 | } | ||
386 | static inline int enable_jprobe(struct jprobe *jp) | ||
387 | { | ||
388 | return enable_kprobe(&jp->kp); | ||
389 | } | ||
390 | |||
374 | #endif /* _LINUX_KPROBES_H */ | 391 | #endif /* _LINUX_KPROBES_H */ |