From: Steven Rostedt rostedt@goodmis.org
Running the following commands was broken:
# cd /sys/kernel/tracing # echo "filename.ustring ~ "/proc*"" > events/syscalls/sys_enter_openat/filter # echo 1 > events/syscalls/sys_enter_openat/enable # ls /proc/$$/maps # cat trace
And would produce nothing when it should have produced something like:
ls-1192 [007] ..... 8169.828333: sys_openat(dfd: ffffffffffffff9c, filename: 7efc18359904, flags: 80000, mode: 0)
Add a test to check this case so that it will be caught if it breaks again.
Signed-off-by: Steven Rostedt (Google) rostedt@goodmis.org --- Shuah, I'm Cc'ing you on this for your information, but I'll take it through my tree as it will be attached with the fix, as it will fail without it.
.../test.d/filter/event-filter-function.tc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc b/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc index 118247b8dd84..ab449a2cea8c 100644 --- a/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc +++ b/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc @@ -80,6 +80,25 @@ if [ $misscnt -gt 0 ]; then exit_fail fi
+# Check strings too +if [ -f events/syscalls/sys_enter_openat/filter ]; then + echo "filename.ustring ~ "*test.d*"" > events/syscalls/sys_enter_openat/filter + echo 1 > events/syscalls/sys_enter_openat/enable + echo 1 > tracing_on + ls /bin/sh + nocnt=`grep openat trace | wc -l` + ls $TEST_DIR + echo 0 > tracing_on + hitcnt=`grep openat trace | wc -l`; + echo 0 > events/syscalls/sys_enter_openat/enable + if [ $nocnt -gt 0 ]; then + exit_fail + fi + if [ $hitcnt -eq 0 ]; then + exit_fail + fi +fi + reset_events_filter
exit 0
On Thu, 17 Apr 2025 22:33:23 -0400 Steven Rostedt rostedt@goodmis.org wrote:
From: Steven Rostedt rostedt@goodmis.org
Running the following commands was broken:
# cd /sys/kernel/tracing # echo "filename.ustring ~ "/proc*"" > events/syscalls/sys_enter_openat/filter # echo 1 > events/syscalls/sys_enter_openat/enable # ls /proc/$$/maps # cat trace
And would produce nothing when it should have produced something like:
ls-1192 [007] ..... 8169.828333: sys_openat(dfd: ffffffffffffff9c, filename: 7efc18359904, flags: 80000, mode: 0)
Add a test to check this case so that it will be caught if it breaks again.
Signed-off-by: Steven Rostedt (Google) rostedt@goodmis.org
Shuah, I'm Cc'ing you on this for your information, but I'll take it through my tree as it will be attached with the fix, as it will fail without it.
.../test.d/filter/event-filter-function.tc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc b/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc index 118247b8dd84..ab449a2cea8c 100644 --- a/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc +++ b/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc @@ -80,6 +80,25 @@ if [ $misscnt -gt 0 ]; then exit_fail fi +# Check strings too +if [ -f events/syscalls/sys_enter_openat/filter ]; then
- echo "filename.ustring ~ "*test.d*"" > events/syscalls/sys_enter_openat/filter
I think it is better to use a $TMPDIR for the test script, instead of reusing the $TEST_DIR. Since $TMPDIR has been introduced to be used for this purpose.
DIRNAME=`basename $TMPDIR`
echo "filename.ustring ~ "*$DIRNAME*"" > events/syscalls/sys_enter_openat/filter
- echo 1 > events/syscalls/sys_enter_openat/enable
- echo 1 > tracing_on
- ls /bin/sh
- nocnt=`grep openat trace | wc -l`
- ls $TEST_DIR
and `ls $TMPDIR` ?
Does that work?
Thank you,
- echo 0 > tracing_on
- hitcnt=`grep openat trace | wc -l`;
- echo 0 > events/syscalls/sys_enter_openat/enable
- if [ $nocnt -gt 0 ]; then
exit_fail
- fi
- if [ $hitcnt -eq 0 ]; then
exit_fail
- fi
+fi
reset_events_filter exit 0 -- 2.47.2
On Fri, 18 Apr 2025 16:14:04 +0900 Masami Hiramatsu (Google) mhiramat@kernel.org wrote:
+if [ -f events/syscalls/sys_enter_openat/filter ]; then
- echo "filename.ustring ~ "*test.d*"" > events/syscalls/sys_enter_openat/filter
I think it is better to use a $TMPDIR for the test script, instead of reusing the $TEST_DIR. Since $TMPDIR has been introduced to be used for this purpose.
DIRNAME=`basename $TMPDIR`
echo "filename.ustring ~ "*$DIRNAME*"" > events/syscalls/sys_enter_openat/filter
- echo 1 > events/syscalls/sys_enter_openat/enable
- echo 1 > tracing_on
- ls /bin/sh
- nocnt=`grep openat trace | wc -l`
- ls $TEST_DIR
and `ls $TMPDIR` ?
Does that work?
Yeah I can do that instead.
My actual fear is that 'ls' may one day not call openat and the test fails. But if that happens we can always update the test.
Thanks,
-- Steve
linux-kselftest-mirror@lists.linaro.org