| .. | .. |
|---|
| 1 | 1 | #!/bin/sh |
|---|
| 2 | 2 | # SPDX-License-Identifier: GPL-2.0 |
|---|
| 3 | 3 | # description: Kprobe dynamic event - probing module |
|---|
| 4 | +# requires: kprobe_events |
|---|
| 4 | 5 | |
|---|
| 5 | | -[ -f kprobe_events ] || exit_unsupported # this is configurable |
|---|
| 6 | +rmmod trace-printk ||: |
|---|
| 7 | +if ! modprobe trace-printk ; then |
|---|
| 8 | + echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= |
|---|
| 9 | +m" |
|---|
| 10 | + exit_unresolved; |
|---|
| 11 | +fi |
|---|
| 6 | 12 | |
|---|
| 7 | | -disable_events |
|---|
| 8 | | -echo > kprobe_events |
|---|
| 13 | +MOD=trace_printk |
|---|
| 14 | +FUNC=trace_printk_irq_work |
|---|
| 9 | 15 | |
|---|
| 10 | 16 | :;: "Add an event on a module function without specifying event name" ;: |
|---|
| 11 | 17 | |
|---|
| 12 | | -MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "` |
|---|
| 13 | | -FUNC=`grep -m 1 ".* t .*\\[$MOD\\]" /proc/kallsyms | xargs | cut -f3 -d" "` |
|---|
| 14 | | -[ "x" != "x$MOD" -a "y" != "y$FUNC" ] || exit_unresolved |
|---|
| 15 | 18 | echo "p $MOD:$FUNC" > kprobe_events |
|---|
| 16 | 19 | PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` |
|---|
| 17 | 20 | test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure |
|---|
| .. | .. |
|---|
| 26 | 29 | echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events |
|---|
| 27 | 30 | test -d events/kprobes1/event1 || exit_failure |
|---|
| 28 | 31 | |
|---|
| 29 | | -echo > kprobe_events |
|---|
| 32 | +:;: "Remove target module, but event still be there" ;: |
|---|
| 33 | +if ! rmmod trace-printk ; then |
|---|
| 34 | + echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD" |
|---|
| 35 | + exit_unresolved; |
|---|
| 36 | +fi |
|---|
| 37 | +test -d events/kprobes1/event1 |
|---|
| 38 | + |
|---|
| 39 | +:;: "Check posibility to defining events on unloaded module";: |
|---|
| 40 | +echo "p:event2 $MOD:$FUNC" >> kprobe_events |
|---|
| 41 | + |
|---|
| 42 | +:;: "Target is gone, but we can prepare for next time";: |
|---|
| 43 | +echo 1 > events/kprobes1/event1/enable |
|---|
| 44 | + |
|---|
| 45 | +:;: "Load module again, which means the event1 should be recorded";: |
|---|
| 46 | +modprobe trace-printk |
|---|
| 47 | +grep "event1:" trace |
|---|
| 48 | + |
|---|
| 49 | +:;: "Remove the module again and check the event is not locked" |
|---|
| 50 | +rmmod trace-printk |
|---|
| 51 | +echo 0 > events/kprobes1/event1/enable |
|---|
| 52 | +echo "-:kprobes1/event1" >> kprobe_events |
|---|