mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-18 22:14:16 +00: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_IRQSOFF_TRACER=y | ||||
| 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 | ||||
| 
 | ||||
| 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" ;: | ||||
| 
 | ||||
| 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 | ||||
| PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` | ||||
| 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 | ||||
| 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…
	
	Add table
		
		Reference in a new issue
	
	 Masami Hiramatsu
						Masami Hiramatsu