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>
This commit is contained in:
Masami Hiramatsu 2009-04-06 19:01:02 -07:00 коммит произвёл Linus Torvalds
Родитель de5bd88d5a
Коммит 8f9b15286a
2 изменённых файлов: 27 добавлений и 6 удалений

Просмотреть файл

@ -365,21 +365,25 @@ probes) in the specified array, they clear the addr field of those
incorrect probes. However, other probes in the array are incorrect probes. However, other probes in the array are
unregistered correctly. unregistered correctly.
4.7 disable_kprobe 4.7 disable_*probe
#include <linux/kprobes.h> #include <linux/kprobes.h>
int disable_kprobe(struct kprobe *kp); int disable_kprobe(struct kprobe *kp);
int disable_kretprobe(struct kretprobe *rp);
int disable_jprobe(struct jprobe *jp);
Temporarily disables the specified kprobe. You can enable it again by using Temporarily disables the specified *probe. You can enable it again by using
enable_kprobe(). You must specify the kprobe which has been registered. enable_*probe(). You must specify the probe which has been registered.
4.8 enable_kprobe 4.8 enable_*probe
#include <linux/kprobes.h> #include <linux/kprobes.h>
int enable_kprobe(struct kprobe *kp); int enable_kprobe(struct kprobe *kp);
int enable_kretprobe(struct kretprobe *rp);
int enable_jprobe(struct jprobe *jp);
Enables kprobe which has been disabled by disable_kprobe(). You must specify Enables *probe which has been disabled by disable_*probe(). You must specify
the kprobe which has been registered. the probe which has been registered.
5. Kprobes Features and Limitations 5. Kprobes Features and Limitations

Просмотреть файл

@ -371,4 +371,21 @@ static inline int enable_kprobe(struct kprobe *kp)
return -ENOSYS; return -ENOSYS;
} }
#endif /* CONFIG_KPROBES */ #endif /* CONFIG_KPROBES */
static inline int disable_kretprobe(struct kretprobe *rp)
{
return disable_kprobe(&rp->kp);
}
static inline int enable_kretprobe(struct kretprobe *rp)
{
return enable_kprobe(&rp->kp);
}
static inline int disable_jprobe(struct jprobe *jp)
{
return disable_kprobe(&jp->kp);
}
static inline int enable_jprobe(struct jprobe *jp)
{
return enable_kprobe(&jp->kp);
}
#endif /* _LINUX_KPROBES_H */ #endif /* _LINUX_KPROBES_H */