Re: [PATCH bpf-next 3/3] selftests/bpf: test freplace from user namespace

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

 



On Tue, Mar 4, 2025 at 1:15 PM Mykyta Yatsenko
<mykyta.yatsenko5@xxxxxxxxx> wrote:
>
> From: Mykyta Yatsenko <yatsenko@xxxxxxxx>
>
> Add selftests to verify that it is possible to load freplace program
> from user namespace if BPF token is initialized by bpf_object__prepare
> before calling bpf_program__set_attach_target.
> Negative test is added as well.
>
> Signed-off-by: Mykyta Yatsenko <yatsenko@xxxxxxxx>
> ---
>  .../testing/selftests/bpf/prog_tests/token.c  | 94 +++++++++++++++++++
>  .../selftests/bpf/progs/priv_freplace_prog.c  | 13 +++
>  tools/testing/selftests/bpf/progs/priv_prog.c |  4 +-
>  3 files changed, 109 insertions(+), 2 deletions(-)
>  create mode 100644 tools/testing/selftests/bpf/progs/priv_freplace_prog.c

[...]

> +/* Verify that freplace works from user namespace, because bpf token is loaded
> + * in bpf_object__prepare
> + */
> +static int userns_obj_priv_freplace_prog(int mnt_fd, struct token_lsm *lsm_skel)
> +{
> +       struct priv_freplace_prog *fr_skel = NULL;
> +       struct priv_prog *skel = NULL;
> +       int err, tgt_fd;
> +
> +       err = userns_obj_priv_freplace_setup(mnt_fd, &fr_skel, &skel, &tgt_fd);
> +       if (!ASSERT_OK(err, "setup"))
> +               goto out;
> +
> +       err = bpf_object__prepare(fr_skel->obj);
> +       if (!ASSERT_OK(err, "freplace__prepare"))
> +               goto out;
> +
> +       err = bpf_program__set_attach_target(fr_skel->progs.new_kprobe_prog, tgt_fd, "kprobe_prog");
> +       if (err)

if (!ASSERT_OK(err, "set_attach_target"))

> +               goto out;
> +
> +       err = priv_freplace_prog__load(fr_skel);
> +       ASSERT_OK(err, "priv_freplace_prog__load");
> +out:
> +       priv_freplace_prog__destroy(fr_skel);
> +       priv_prog__destroy(skel);
> +       return err;
> +}
> +

[...]

> diff --git a/tools/testing/selftests/bpf/progs/priv_prog.c b/tools/testing/selftests/bpf/progs/priv_prog.c
> index 3c7b2b618c8a..be9deda38b52 100644
> --- a/tools/testing/selftests/bpf/progs/priv_prog.c
> +++ b/tools/testing/selftests/bpf/progs/priv_prog.c
> @@ -1,5 +1,5 @@
>  // SPDX-License-Identifier: GPL-2.0
> -/* Copyright (c) 2023 Meta Platforms, Inc. and affiliates. */
> +/* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */

you don't need to update copyright year when updating the file, just
leave it as is here and above

>
>  #include "vmlinux.h"
>  #include <bpf/bpf_helpers.h>
> @@ -7,7 +7,7 @@
>  char _license[] SEC("license") = "GPL";
>
>  SEC("kprobe")
> -int kprobe_prog(void *ctx)
> +int kprobe_prog(struct pt_regs *ctx)
>  {
>         return 1;
>  }
> --
> 2.48.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