]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 16 Sep 2021 01:58:35 +0000 (18:58 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 17 Sep 2021 16:05:41 +0000 (09:05 -0700)
bpf_object_open_opts.attach_prog_fd makes a pretty strong assumption
that bpf_object contains either only single freplace BPF program or all
of BPF programs in BPF object are freplaces intended to replace
different subprograms of the same target BPF program. This seems both
a bit confusing, too assuming, and limiting.

We've had bpf_program__set_attach_target() API which allows more
fine-grained control over this, on a per-program level. As such, mark
open_opts.attach_prog_fd as deprecated starting from v0.7, so that we
have one more universal way of setting freplace targets. With previous
change to allow NULL attach_func_name argument, and especially combined
with BPF skeleton, arguable bpf_program__set_attach_target() is a more
convenient and explicit API as well.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20210916015836.1248906-7-andrii@kernel.org
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf_common.h

index 552d05a85cbbfce91cdd5f6de47cf10d164efa41..6aeeb0e82accee1834f90a7c2f650b54279ea475 100644 (file)
@@ -6415,9 +6415,12 @@ static int bpf_object_init_progs(struct bpf_object *obj, const struct bpf_object
                bpf_program__set_type(prog, prog->sec_def->prog_type);
                bpf_program__set_expected_attach_type(prog, prog->sec_def->expected_attach_type);
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
                if (prog->sec_def->prog_type == BPF_PROG_TYPE_TRACING ||
                    prog->sec_def->prog_type == BPF_PROG_TYPE_EXT)
                        prog->attach_prog_fd = OPTS_GET(opts, attach_prog_fd, 0);
+#pragma GCC diagnostic pop
        }
 
        return 0;
index 7111e8d651de632c6c5f3011c15c315a30675f11..52b7ee090037c6ce7337ff779b7a088cf3f0997c 100644 (file)
@@ -90,6 +90,8 @@ struct bpf_object_open_opts {
         * auto-pinned to that path on load; defaults to "/sys/fs/bpf".
         */
        const char *pin_root_path;
+
+       LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_program__set_attach_target() on each individual bpf_program")
        __u32 attach_prog_fd;
        /* Additional kernel config content that augments and overrides
         * system Kconfig for CONFIG_xxx externs.
index 36ac77f2bea24d75001d40a2758bf80a30ac8b25..aaa1efbf6f5109dd80988e7396c00dd524b19c21 100644 (file)
 #else
 #define __LIBBPF_MARK_DEPRECATED_0_6(X)
 #endif
+#if __LIBBPF_CURRENT_VERSION_GEQ(0, 7)
+#define __LIBBPF_MARK_DEPRECATED_0_7(X) X
+#else
+#define __LIBBPF_MARK_DEPRECATED_0_7(X)
+#endif
 
 /* Helper macro to declare and initialize libbpf options struct
  *