Re: [PATCH bpf-next 6/9] selftests/bpf: Attach to fopen()/fclose() in attach_probe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 8, 2023 at 12:57 PM Ilya Leoshkevich <iii@xxxxxxxxxxxxx> wrote:
>
> malloc() and free() may be completely replaced by sanitizers, use
> fopen() and fclose() instead.
>
> Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx>
> ---
>  tools/testing/selftests/bpf/prog_tests/attach_probe.c | 10 +++++-----
>  tools/testing/selftests/bpf/progs/test_attach_probe.c |  8 +++++---
>  2 files changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/attach_probe.c b/tools/testing/selftests/bpf/prog_tests/attach_probe.c
> index 9566d9d2f6ee..56374c8b5436 100644
> --- a/tools/testing/selftests/bpf/prog_tests/attach_probe.c
> +++ b/tools/testing/selftests/bpf/prog_tests/attach_probe.c
> @@ -33,8 +33,8 @@ void test_attach_probe(void)
>         struct test_attach_probe* skel;
>         ssize_t uprobe_offset, ref_ctr_offset;
>         struct bpf_link *uprobe_err_link;
> +       FILE *devnull;
>         bool legacy;
> -       char *mem;
>
>         /* Check if new-style kprobe/uprobe API is supported.
>          * Kernels that support new FD-based kprobe and uprobe BPF attachment
> @@ -147,7 +147,7 @@ void test_attach_probe(void)
>         /* test attach by name for a library function, using the library
>          * as the binary argument. libc.so.6 will be resolved via dlopen()/dlinfo().
>          */
> -       uprobe_opts.func_name = "malloc";
> +       uprobe_opts.func_name = "fopen";
>         uprobe_opts.retprobe = false;
>         skel->links.handle_uprobe_byname2 =
>                         bpf_program__attach_uprobe_opts(skel->progs.handle_uprobe_byname2,
> @@ -157,7 +157,7 @@ void test_attach_probe(void)
>         if (!ASSERT_OK_PTR(skel->links.handle_uprobe_byname2, "attach_uprobe_byname2"))
>                 goto cleanup;
>
> -       uprobe_opts.func_name = "free";
> +       uprobe_opts.func_name = "fclose";
>         uprobe_opts.retprobe = true;
>         skel->links.handle_uretprobe_byname2 =
>                         bpf_program__attach_uprobe_opts(skel->progs.handle_uretprobe_byname2,
> @@ -195,8 +195,8 @@ void test_attach_probe(void)
>         usleep(1);
>
>         /* trigger & validate shared library u[ret]probes attached by name */
> -       mem = malloc(1);
> -       free(mem);
> +       devnull = fopen("/dev/null", "r");
> +       fclose(devnull);
>
>         /* trigger & validate uprobe & uretprobe */
>         trigger_func();
> diff --git a/tools/testing/selftests/bpf/progs/test_attach_probe.c b/tools/testing/selftests/bpf/progs/test_attach_probe.c
> index a1e45fec8938..269a184c265c 100644
> --- a/tools/testing/selftests/bpf/progs/test_attach_probe.c
> +++ b/tools/testing/selftests/bpf/progs/test_attach_probe.c
> @@ -94,10 +94,12 @@ int handle_uretprobe_byname(struct pt_regs *ctx)
>  SEC("uprobe")
>  int handle_uprobe_byname2(struct pt_regs *ctx)
>  {
> -       unsigned int size = PT_REGS_PARM1(ctx);
> +       void *mode_ptr = (void *)(long)PT_REGS_PARM2(ctx);

let's use BPF_UPROBE() macro instead of PT_REGS_xxx() calls?

> +       char mode[2] = {};
>
> -       /* verify malloc size */
> -       if (size == 1)
> +       /* verify fopen mode */
> +       bpf_probe_read_user(mode, sizeof(mode), mode_ptr);
> +       if (mode[0] == 'r' && mode[1] == 0)
>                 uprobe_byname2_res = 7;
>         return 0;
>  }
> --
> 2.39.1
>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux