mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	selftests/ftrace: Improve kprobe on module testcase to load/unload module
Improve kprobe events on module testcase to check module load/unload with disabled/enabled events. This also change the target module to trace_printk.ko, so it depends on CONFIG_SAMPLE_TRACE_PRINTK=m. Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
This commit is contained in:
		
							parent
							
								
									cec3adf5f5
								
							
						
					
					
						commit
						af2a0750f3
					
				
					 2 changed files with 36 additions and 3 deletions
				
			
		|  | @ -7,3 +7,7 @@ CONFIG_HIST_TRIGGERS=y | ||||||
| CONFIG_PREEMPT_TRACER=y | CONFIG_PREEMPT_TRACER=y | ||||||
| CONFIG_IRQSOFF_TRACER=y | CONFIG_IRQSOFF_TRACER=y | ||||||
| CONFIG_PREEMPTIRQ_DELAY_TEST=m | CONFIG_PREEMPTIRQ_DELAY_TEST=m | ||||||
|  | CONFIG_MODULES=y | ||||||
|  | CONFIG_MODULE_UNLOAD=y | ||||||
|  | CONFIG_SAMPLES=y | ||||||
|  | CONFIG_SAMPLE_TRACE_PRINTK=m | ||||||
|  |  | ||||||
|  | @ -4,11 +4,18 @@ | ||||||
| 
 | 
 | ||||||
| [ -f kprobe_events ] || exit_unsupported # this is configurable | [ -f kprobe_events ] || exit_unsupported # this is configurable | ||||||
| 
 | 
 | ||||||
|  | rmmod trace-printk ||: | ||||||
|  | if ! modprobe trace-printk ; then | ||||||
|  |   echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= | ||||||
|  | m" | ||||||
|  |   exit_unresolved; | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | MOD=trace_printk | ||||||
|  | FUNC=trace_printk_irq_work | ||||||
|  | 
 | ||||||
| :;: "Add an event on a module function without specifying event name" ;: | :;: "Add an event on a module function without specifying event name" ;: | ||||||
| 
 | 
 | ||||||
| MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "` |  | ||||||
| FUNC=`grep -m 1 ".* t .*\\[$MOD\\]" /proc/kallsyms | xargs | cut -f3 -d" "` |  | ||||||
| [ "x" != "x$MOD" -a "y" != "y$FUNC" ] || exit_unresolved |  | ||||||
| echo "p $MOD:$FUNC" > kprobe_events | echo "p $MOD:$FUNC" > kprobe_events | ||||||
| PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` | PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` | ||||||
| test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure | test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure | ||||||
|  | @ -22,3 +29,25 @@ test -d events/kprobes/event1 || exit_failure | ||||||
| 
 | 
 | ||||||
| echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events | echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events | ||||||
| test -d events/kprobes1/event1 || exit_failure | test -d events/kprobes1/event1 || exit_failure | ||||||
|  | 
 | ||||||
|  | :;: "Remove target module, but event still be there" ;: | ||||||
|  | if ! rmmod trace-printk ; then | ||||||
|  |   echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD" | ||||||
|  |   exit_unresolved; | ||||||
|  | fi | ||||||
|  | test -d events/kprobes1/event1 | ||||||
|  | 
 | ||||||
|  | :;: "Check posibility to defining events on unloaded module";: | ||||||
|  | echo "p:event2 $MOD:$FUNC" >> kprobe_events | ||||||
|  | 
 | ||||||
|  | :;: "Target is gone, but we can prepare for next time";: | ||||||
|  | echo 1 > events/kprobes1/event1/enable | ||||||
|  | 
 | ||||||
|  | :;: "Load module again, which means the event1 should be recorded";: | ||||||
|  | modprobe trace-printk | ||||||
|  | grep "event1:" trace | ||||||
|  | 
 | ||||||
|  | :;: "Remove the module again and check the event is not locked" | ||||||
|  | rmmod trace-printk | ||||||
|  | echo 0 > events/kprobes1/event1/enable | ||||||
|  | echo "-:kprobes1/event1" >> kprobe_events | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Masami Hiramatsu
						Masami Hiramatsu