lkml.org 
[lkml]   [2022]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/2] tracing: kprobe: make gen test module work in arm and riscv
On Mon, 19 Sep 2022 20:56:29 +0800
Yipeng Zou <zouyipeng@huawei.com> wrote:

> For now, this selftest module can only work in x86 because of the
> kprobe cmd was fixed use of x86 registers.
> This patch adapted to register names under arm and riscv, So that
> this module can be worked on those platform.

This also looks good to me. (good & simple solution :))

Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Thank you,

>
> Fixes: 64836248dda2 ("tracing: Add kprobe event command generation test module")
> Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
> ---
> kernel/trace/kprobe_event_gen_test.c | 47 +++++++++++++++++++++++++---
> 1 file changed, 43 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/trace/kprobe_event_gen_test.c b/kernel/trace/kprobe_event_gen_test.c
> index e023154be0f8..80e04a1e1977 100644
> --- a/kernel/trace/kprobe_event_gen_test.c
> +++ b/kernel/trace/kprobe_event_gen_test.c
> @@ -35,6 +35,45 @@
> static struct trace_event_file *gen_kprobe_test;
> static struct trace_event_file *gen_kretprobe_test;
>
> +#define KPROBE_GEN_TEST_FUNC "do_sys_open"
> +
> +/* X86 */
> +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_32)
> +#define KPROBE_GEN_TEST_ARG0 "dfd=%ax"
> +#define KPROBE_GEN_TEST_ARG1 "filename=%dx"
> +#define KPROBE_GEN_TEST_ARG2 "flags=%cx"
> +#define KPROBE_GEN_TEST_ARG3 "mode=+4($stack)"
> +
> +/* ARM64 */
> +#elif defined(CONFIG_ARM64)
> +#define KPROBE_GEN_TEST_ARG0 "dfd=%x0"
> +#define KPROBE_GEN_TEST_ARG1 "filename=%x1"
> +#define KPROBE_GEN_TEST_ARG2 "flags=%x2"
> +#define KPROBE_GEN_TEST_ARG3 "mode=%x3"
> +
> +/* ARM */
> +#elif defined(CONFIG_ARM)
> +#define KPROBE_GEN_TEST_ARG0 "dfd=%r0"
> +#define KPROBE_GEN_TEST_ARG1 "filename=%r1"
> +#define KPROBE_GEN_TEST_ARG2 "flags=%r2"
> +#define KPROBE_GEN_TEST_ARG3 "mode=%r3"
> +
> +/* RISCV */
> +#elif defined(CONFIG_RISCV)
> +#define KPROBE_GEN_TEST_ARG0 "dfd=%a0"
> +#define KPROBE_GEN_TEST_ARG1 "filename=%a1"
> +#define KPROBE_GEN_TEST_ARG2 "flags=%a2"
> +#define KPROBE_GEN_TEST_ARG3 "mode=%a3"
> +
> +/* others */
> +#else
> +#define KPROBE_GEN_TEST_ARG0 NULL
> +#define KPROBE_GEN_TEST_ARG1 NULL
> +#define KPROBE_GEN_TEST_ARG2 NULL
> +#define KPROBE_GEN_TEST_ARG3 NULL
> +#endif
> +
> +
> /*
> * Test to make sure we can create a kprobe event, then add more
> * fields.
> @@ -58,14 +97,14 @@ static int __init test_gen_kprobe_cmd(void)
> * fields.
> */
> ret = kprobe_event_gen_cmd_start(&cmd, "gen_kprobe_test",
> - "do_sys_open",
> - "dfd=%ax", "filename=%dx");
> + KPROBE_GEN_TEST_FUNC,
> + KPROBE_GEN_TEST_ARG0, KPROBE_GEN_TEST_ARG1);
> if (ret)
> goto free;
>
> /* Use kprobe_event_add_fields to add the rest of the fields */
>
> - ret = kprobe_event_add_fields(&cmd, "flags=%cx", "mode=+4($stack)");
> + ret = kprobe_event_add_fields(&cmd, KPROBE_GEN_TEST_ARG2, KPROBE_GEN_TEST_ARG3);
> if (ret)
> goto free;
>
> @@ -128,7 +167,7 @@ static int __init test_gen_kretprobe_cmd(void)
> * Define the kretprobe event.
> */
> ret = kretprobe_event_gen_cmd_start(&cmd, "gen_kretprobe_test",
> - "do_sys_open",
> + KPROBE_GEN_TEST_FUNC,
> "$retval");
> if (ret)
> goto free;
> --
> 2.17.1
>


--
Masami Hiramatsu (Google) <mhiramat@kernel.org>

\
 
 \ /
  Last update: 2022-09-23 16:06    [W:0.058 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site