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

[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>
> ---
>  .../selftests/bpf/prog_tests/uprobe_autoattach.c     | 12 ++++++------
>  .../selftests/bpf/progs/test_uprobe_autoattach.c     | 10 +++++-----
>  2 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/uprobe_autoattach.c b/tools/testing/selftests/bpf/prog_tests/uprobe_autoattach.c
> index 82807def0d24..b862948f95a8 100644
> --- a/tools/testing/selftests/bpf/prog_tests/uprobe_autoattach.c
> +++ b/tools/testing/selftests/bpf/prog_tests/uprobe_autoattach.c
> @@ -16,10 +16,10 @@ static noinline int autoattach_trigger_func(int arg1, int arg2, int arg3,
>
>  void test_uprobe_autoattach(void)
>  {
> +       const char *devnull_str = "/dev/null";
>         struct test_uprobe_autoattach *skel;
>         int trigger_ret;
> -       size_t malloc_sz = 1;
> -       char *mem;
> +       FILE *devnull;
>
>         skel = test_uprobe_autoattach__open_and_load();
>         if (!ASSERT_OK_PTR(skel, "skel_open"))
> @@ -36,16 +36,16 @@ void test_uprobe_autoattach(void)
>         skel->bss->test_pid = getpid();
>
>         /* trigger & validate shared library u[ret]probes attached by name */
> -       mem = malloc(malloc_sz);
> +       devnull = fopen(devnull_str, "r");
>
>         ASSERT_EQ(skel->bss->uprobe_byname_parm1, 1, "check_uprobe_byname_parm1");
>         ASSERT_EQ(skel->bss->uprobe_byname_ran, 1, "check_uprobe_byname_ran");
>         ASSERT_EQ(skel->bss->uretprobe_byname_rc, trigger_ret, "check_uretprobe_byname_rc");
>         ASSERT_EQ(skel->bss->uretprobe_byname_ret, trigger_ret, "check_uretprobe_byname_ret");
>         ASSERT_EQ(skel->bss->uretprobe_byname_ran, 2, "check_uretprobe_byname_ran");
> -       ASSERT_EQ(skel->bss->uprobe_byname2_parm1, malloc_sz, "check_uprobe_byname2_parm1");
> +       ASSERT_EQ(skel->bss->uprobe_byname2_parm1, devnull_str, "check_uprobe_byname2_parm1");
>         ASSERT_EQ(skel->bss->uprobe_byname2_ran, 3, "check_uprobe_byname2_ran");
> -       ASSERT_EQ(skel->bss->uretprobe_byname2_rc, mem, "check_uretprobe_byname2_rc");
> +       ASSERT_EQ(skel->bss->uretprobe_byname2_rc, (void *)devnull, "check_uretprobe_byname2_rc");
>         ASSERT_EQ(skel->bss->uretprobe_byname2_ran, 4, "check_uretprobe_byname2_ran");
>
>         ASSERT_EQ(skel->bss->a[0], 1, "arg1");
> @@ -67,7 +67,7 @@ void test_uprobe_autoattach(void)
>         ASSERT_EQ(skel->bss->a[7], 8, "arg8");
>  #endif
>
> -       free(mem);
> +       fclose(devnull);
>  cleanup:
>         test_uprobe_autoattach__destroy(skel);
>  }
> diff --git a/tools/testing/selftests/bpf/progs/test_uprobe_autoattach.c b/tools/testing/selftests/bpf/progs/test_uprobe_autoattach.c
> index 774ddeb45898..72f5e7a82c58 100644
> --- a/tools/testing/selftests/bpf/progs/test_uprobe_autoattach.c
> +++ b/tools/testing/selftests/bpf/progs/test_uprobe_autoattach.c
> @@ -13,9 +13,9 @@ int uprobe_byname_ran = 0;
>  int uretprobe_byname_rc = 0;
>  int uretprobe_byname_ret = 0;
>  int uretprobe_byname_ran = 0;
> -size_t uprobe_byname2_parm1 = 0;
> +void *uprobe_byname2_parm1 = NULL;
>  int uprobe_byname2_ran = 0;
> -char *uretprobe_byname2_rc = NULL;
> +void *uretprobe_byname2_rc = NULL;


ugh... shall we use u64 and avoid problems with 32-bit host vs 64-bit
BPF mismatch? Maybe it will never bite us, but why risking?

>  int uretprobe_byname2_ran = 0;
>
>  int test_pid;
> @@ -88,7 +88,7 @@ int BPF_URETPROBE(handle_uretprobe_byname, int ret)
>  }
>
>
> -SEC("uprobe/libc.so.6:malloc")
> +SEC("uprobe/libc.so.6:fopen")
>  int handle_uprobe_byname2(struct pt_regs *ctx)
>  {
>         int pid = bpf_get_current_pid_tgid() >> 32;
> @@ -96,12 +96,12 @@ int handle_uprobe_byname2(struct pt_regs *ctx)
>         /* ignore irrelevant invocations */
>         if (test_pid != pid)
>                 return 0;
> -       uprobe_byname2_parm1 = PT_REGS_PARM1_CORE(ctx);
> +       uprobe_byname2_parm1 = (void *)(long)PT_REGS_PARM1_CORE(ctx);
>         uprobe_byname2_ran = 3;
>         return 0;
>  }
>
> -SEC("uretprobe/libc.so.6:malloc")
> +SEC("uretprobe/libc.so.6:fopen")
>  int handle_uretprobe_byname2(struct pt_regs *ctx)
>  {
>         int pid = bpf_get_current_pid_tgid() >> 32;
> --
> 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