diff options
| author | Masami Hiramatsu <mhiramat@kernel.org> | 2017-10-05 19:15:57 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2017-10-20 05:02:55 -0400 |
| commit | 9be95bdc53c12ada23e39027237fd05e1393d893 (patch) | |
| tree | 391e26645f79b467a0dc574f2373e367d2154079 /samples | |
| parent | 2c7d662e2647aa55fa56dc449b3878ac24e17adf (diff) | |
kprobes: Remove the jprobes sample code
Remove the jprobes sample module because jprobes are deprecated.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: David S . Miller <davem@davemloft.net>
Cc: Ian McDonald <ian.mcdonald@jandi.co.nz>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E . McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vlad Yasevich <vyasevich@gmail.com>
Link: http://lkml.kernel.org/r/150724535709.5014.7261513316230565780.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/kprobes/Makefile | 2 | ||||
| -rw-r--r-- | samples/kprobes/jprobe_example.c | 67 |
2 files changed, 1 insertions, 68 deletions
diff --git a/samples/kprobes/Makefile b/samples/kprobes/Makefile index 68739bc4fc6a..880e54d2c082 100644 --- a/samples/kprobes/Makefile +++ b/samples/kprobes/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | # builds the kprobes example kernel modules; | 1 | # builds the kprobes example kernel modules; |
| 2 | # then to use one (as root): insmod <module_name.ko> | 2 | # then to use one (as root): insmod <module_name.ko> |
| 3 | 3 | ||
| 4 | obj-$(CONFIG_SAMPLE_KPROBES) += kprobe_example.o jprobe_example.o | 4 | obj-$(CONFIG_SAMPLE_KPROBES) += kprobe_example.o |
| 5 | obj-$(CONFIG_SAMPLE_KRETPROBES) += kretprobe_example.o | 5 | obj-$(CONFIG_SAMPLE_KRETPROBES) += kretprobe_example.o |
diff --git a/samples/kprobes/jprobe_example.c b/samples/kprobes/jprobe_example.c deleted file mode 100644 index e3c0a40909f7..000000000000 --- a/samples/kprobes/jprobe_example.c +++ /dev/null | |||
| @@ -1,67 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Here's a sample kernel module showing the use of jprobes to dump | ||
| 3 | * the arguments of _do_fork(). | ||
| 4 | * | ||
| 5 | * For more information on theory of operation of jprobes, see | ||
| 6 | * Documentation/kprobes.txt | ||
| 7 | * | ||
| 8 | * Build and insert the kernel module as done in the kprobe example. | ||
| 9 | * You will see the trace data in /var/log/messages and on the | ||
| 10 | * console whenever _do_fork() is invoked to create a new process. | ||
| 11 | * (Some messages may be suppressed if syslogd is configured to | ||
| 12 | * eliminate duplicate messages.) | ||
| 13 | */ | ||
| 14 | |||
| 15 | #include <linux/kernel.h> | ||
| 16 | #include <linux/module.h> | ||
| 17 | #include <linux/kprobes.h> | ||
| 18 | |||
| 19 | /* | ||
| 20 | * Jumper probe for _do_fork. | ||
| 21 | * Mirror principle enables access to arguments of the probed routine | ||
| 22 | * from the probe handler. | ||
| 23 | */ | ||
| 24 | |||
| 25 | /* Proxy routine having the same arguments as actual _do_fork() routine */ | ||
| 26 | static long j_do_fork(unsigned long clone_flags, unsigned long stack_start, | ||
| 27 | unsigned long stack_size, int __user *parent_tidptr, | ||
| 28 | int __user *child_tidptr, unsigned long tls) | ||
| 29 | { | ||
| 30 | pr_info("jprobe: clone_flags = 0x%lx, stack_start = 0x%lx " | ||
| 31 | "stack_size = 0x%lx\n", clone_flags, stack_start, stack_size); | ||
| 32 | |||
| 33 | /* Always end with a call to jprobe_return(). */ | ||
| 34 | jprobe_return(); | ||
| 35 | return 0; | ||
| 36 | } | ||
| 37 | |||
| 38 | static struct jprobe my_jprobe = { | ||
| 39 | .entry = j_do_fork, | ||
| 40 | .kp = { | ||
| 41 | .symbol_name = "_do_fork", | ||
| 42 | }, | ||
| 43 | }; | ||
| 44 | |||
| 45 | static int __init jprobe_init(void) | ||
| 46 | { | ||
| 47 | int ret; | ||
| 48 | |||
| 49 | ret = register_jprobe(&my_jprobe); | ||
| 50 | if (ret < 0) { | ||
| 51 | pr_err("register_jprobe failed, returned %d\n", ret); | ||
| 52 | return -1; | ||
| 53 | } | ||
| 54 | pr_info("Planted jprobe at %p, handler addr %p\n", | ||
| 55 | my_jprobe.kp.addr, my_jprobe.entry); | ||
| 56 | return 0; | ||
| 57 | } | ||
| 58 | |||
| 59 | static void __exit jprobe_exit(void) | ||
| 60 | { | ||
| 61 | unregister_jprobe(&my_jprobe); | ||
| 62 | pr_info("jprobe at %p unregistered\n", my_jprobe.kp.addr); | ||
| 63 | } | ||
| 64 | |||
| 65 | module_init(jprobe_init) | ||
| 66 | module_exit(jprobe_exit) | ||
| 67 | MODULE_LICENSE("GPL"); | ||
