Re: [PATCH] selftests/ftrace: Use printf instead of echo in kprobe syntax error tests

From: Steven Rostedt
Date: Wed Mar 04 2020 - 15:50:08 EST


On Wed, 4 Mar 2020 10:14:35 -0600
Seth Forshee <seth.forshee@xxxxxxxxxxxxx> wrote:

> --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc
> +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc
> @@ -37,7 +37,7 @@ fi
>
> check_error 'p vfs_read ^$none_var' # BAD_VAR
>
> -check_error 'p vfs_read ^%none_reg' # BAD_REG_NAME
> +check_error 'p vfs_read ^%%none_reg' # BAD_REG_NAME
> check_error 'p vfs_read ^@12345678abcde' # BAD_MEM_ADDR
> check_error 'p vfs_read ^@+10' # FILE_ON_KPROBE
>
> @@ -80,7 +80,7 @@ check_error 'p vfs_read arg1=^' # NO_ARG_BODY
> # instruction boundary check is valid on x86 (at this moment)
> case $(uname -m) in
> x86_64|i[3456]86)
> - echo 'p vfs_read' > kprobe_events
> + printf 'p vfs_read' > kprobe_events
> if grep -q FTRACE ../kprobes/list ; then
> check_error 'p ^vfs_read+3' # BAD_INSN_BNDRY (only if function-tracer is enabled)
> fi
> @@ -89,13 +89,13 @@ esac
>
> # multiprobe errors
> if grep -q "Create/append/" README && grep -q "imm-value" README; then
> -echo 'p:kprobes/testevent _do_fork' > kprobe_events
> +printf 'p:kprobes/testevent _do_fork' > kprobe_events
> check_error '^r:kprobes/testevent do_exit' # DIFF_PROBE_TYPE
> -echo 'p:kprobes/testevent _do_fork abcd=\1' > kprobe_events
> -check_error 'p:kprobes/testevent _do_fork ^bcd=\1' # DIFF_ARG_TYPE
> -check_error 'p:kprobes/testevent _do_fork ^abcd=\1:u8' # DIFF_ARG_TYPE
> -check_error 'p:kprobes/testevent _do_fork ^abcd=\"foo"' # DIFF_ARG_TYPE
> -check_error '^p:kprobes/testevent _do_fork abcd=\1' # SAME_PROBE
> +printf 'p:kprobes/testevent _do_fork abcd=\\1' > kprobe_events
> +check_error 'p:kprobes/testevent _do_fork ^bcd=\\1' # DIFF_ARG_TYPE
> +check_error 'p:kprobes/testevent _do_fork ^abcd=\\1:u8' # DIFF_ARG_TYPE
> +check_error 'p:kprobes/testevent _do_fork ^abcd=\\"foo"'# DIFF_ARG_TYPE
> +check_error '^p:kprobes/testevent _do_fork abcd=\\1' # SAME_PROBE
> fi
>
> exit 0


This change causes my tests to fail:

++ echo 'Test command: p vfs_read arg1="abcd'
Test command: p vfs_read arg1="abcd
++ echo
++ grep 'trace_kprobe: error:' -A 3 error_log
[61913.240093] trace_kprobe: error: Invalid fetch argument
Command: p vfs_read arg1="abcd
^
+++ tail -n 1 error_log
+++ wc -c
++ N=29
+++ expr 13 + 21
++ test 34 -eq 29


-- Steve