mirror of
https://github.com/torvalds/linux.git
synced 2026-04-20 15:53:59 -04:00
Commitcad6967ac1("fork: introduce kernel_clone()") replaced "_do_fork()" with "kernel_clone()". The ftrace selftests reference the fork function in several of the tests. The rename will make the tests break, but if those names are changed in the tests, they would then break on older kernels. The same set of tests should pass older kernels if they have previously passed. Obviously, a new test may not work on older kernels if the test was added due to a bug or a new feature. The setup of ftracetest will now create a $FUNCTION_FORK bash variable that will contain "_do_fork" for older kernels and "kernel_clone" for newer ones. It figures out the proper name by examining /proc/kallsyms. Note, available_filter_functions could also be used, but because some tests should be able to pass without function tracing enabled, it could not be used. Fixes:eea11285da("tracing: switch to kernel_clone()") Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Acked-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
39 lines
1.6 KiB
Bash
39 lines
1.6 KiB
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# description: Kprobe event symbol argument
|
|
# requires: kprobe_events
|
|
|
|
SYMBOL="linux_proc_banner"
|
|
|
|
if [ ! -f /proc/kallsyms ]; then
|
|
echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
|
|
exit_unresolved
|
|
elif ! grep "$SYMBOL\$" /proc/kallsyms; then
|
|
echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
|
|
exit_unresolved
|
|
fi
|
|
|
|
: "Test get basic types symbol argument"
|
|
echo "p:testprobe_u $FUNCTION_FORK arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events
|
|
echo "p:testprobe_s $FUNCTION_FORK arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events
|
|
if grep -q "x8/16/32/64" README; then
|
|
echo "p:testprobe_x $FUNCTION_FORK arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events
|
|
fi
|
|
echo "p:testprobe_bf $FUNCTION_FORK arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
|
|
echo 1 > events/kprobes/enable
|
|
(echo "forked")
|
|
echo 0 > events/kprobes/enable
|
|
grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
|
|
grep "testprobe_bf:.* arg1=.*" trace
|
|
|
|
: "Test get string symbol argument"
|
|
echo "p:testprobe_str $FUNCTION_FORK arg1=@linux_proc_banner:string" > kprobe_events
|
|
echo 1 > events/kprobes/enable
|
|
(echo "forked")
|
|
echo 0 > events/kprobes/enable
|
|
RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
|
|
|
|
RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
|
|
ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
|
|
test "$RESULT" = "$ORIG"
|