From: Greg Kroah-Hartman Date: Tue, 27 May 2025 15:53:19 +0000 (+0200) Subject: drop libbpf patch for real X-Git-Tag: v6.12.31~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5ca7acf008d9eaf39411cf34f5f7a8b8516669b;p=thirdparty%2Fkernel%2Fstable-queue.git drop libbpf patch for real --- diff --git a/queue-6.12/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch b/queue-6.12/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch deleted file mode 100644 index ab86ecb911..0000000000 --- a/queue-6.12/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch +++ /dev/null @@ -1,166 +0,0 @@ -From da78c30fd182b84458551ef74f482bcd478a17b4 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 17 Mar 2025 17:40:38 +0000 -Subject: libbpf: Pass BPF token from find_prog_btf_id to BPF_BTF_GET_FD_BY_ID - -From: Mykyta Yatsenko - -[ Upstream commit 974ef9f0d23edc1a802691c585b84514b414a96d ] - -Pass BPF token from bpf_program__set_attach_target to -BPF_BTF_GET_FD_BY_ID bpf command. -When freplace program attaches to target program, it needs to look up -for BTF of the target, this may require BPF token, if, for example, -running from user namespace. - -Signed-off-by: Mykyta Yatsenko -Signed-off-by: Andrii Nakryiko -Acked-by: Yonghong Song -Link: https://lore.kernel.org/bpf/20250317174039.161275-4-mykyta.yatsenko5@gmail.com -Signed-off-by: Sasha Levin ---- - tools/lib/bpf/bpf.c | 3 ++- - tools/lib/bpf/bpf.h | 3 ++- - tools/lib/bpf/btf.c | 15 +++++++++++++-- - tools/lib/bpf/libbpf.c | 10 +++++----- - tools/lib/bpf/libbpf_internal.h | 1 + - 5 files changed, 23 insertions(+), 9 deletions(-) - -diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c -index 2a4c71501a17d..72470acce67b7 100644 ---- a/tools/lib/bpf/bpf.c -+++ b/tools/lib/bpf/bpf.c -@@ -1095,7 +1095,7 @@ int bpf_map_get_fd_by_id(__u32 id) - int bpf_btf_get_fd_by_id_opts(__u32 id, - const struct bpf_get_fd_by_id_opts *opts) - { -- const size_t attr_sz = offsetofend(union bpf_attr, open_flags); -+ const size_t attr_sz = offsetofend(union bpf_attr, fd_by_id_token_fd); - union bpf_attr attr; - int fd; - -@@ -1105,6 +1105,7 @@ int bpf_btf_get_fd_by_id_opts(__u32 id, - memset(&attr, 0, attr_sz); - attr.btf_id = id; - attr.open_flags = OPTS_GET(opts, open_flags, 0); -+ attr.fd_by_id_token_fd = OPTS_GET(opts, token_fd, 0); - - fd = sys_bpf_fd(BPF_BTF_GET_FD_BY_ID, &attr, attr_sz); - return libbpf_err_errno(fd); -diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h -index a4a7b1ad1b631..b93d00968cba1 100644 ---- a/tools/lib/bpf/bpf.h -+++ b/tools/lib/bpf/bpf.h -@@ -484,9 +484,10 @@ LIBBPF_API int bpf_link_get_next_id(__u32 start_id, __u32 *next_id); - struct bpf_get_fd_by_id_opts { - size_t sz; /* size of this struct for forward/backward compatibility */ - __u32 open_flags; /* permissions requested for the operation on fd */ -+ __u32 token_fd; - size_t :0; - }; --#define bpf_get_fd_by_id_opts__last_field open_flags -+#define bpf_get_fd_by_id_opts__last_field token_fd - - LIBBPF_API int bpf_prog_get_fd_by_id(__u32 id); - LIBBPF_API int bpf_prog_get_fd_by_id_opts(__u32 id, -diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c -index 27e7bfae953bd..3a7e0ba9f5923 100644 ---- a/tools/lib/bpf/btf.c -+++ b/tools/lib/bpf/btf.c -@@ -1618,12 +1618,18 @@ struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf) - return btf; - } - --struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) -+struct btf *btf_load_from_kernel(__u32 id, struct btf *base_btf, int token_fd) - { - struct btf *btf; - int btf_fd; -+ LIBBPF_OPTS(bpf_get_fd_by_id_opts, opts); -+ -+ if (token_fd) { -+ opts.open_flags |= BPF_F_TOKEN_FD; -+ opts.token_fd = token_fd; -+ } - -- btf_fd = bpf_btf_get_fd_by_id(id); -+ btf_fd = bpf_btf_get_fd_by_id_opts(id, &opts); - if (btf_fd < 0) - return libbpf_err_ptr(-errno); - -@@ -1633,6 +1639,11 @@ struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) - return libbpf_ptr(btf); - } - -+struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) -+{ -+ return btf_load_from_kernel(id, base_btf, 0); -+} -+ - struct btf *btf__load_from_kernel_by_id(__u32 id) - { - return btf__load_from_kernel_by_id_split(id, NULL); -diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c -index 5ff643e60d09c..5b45f76059296 100644 ---- a/tools/lib/bpf/libbpf.c -+++ b/tools/lib/bpf/libbpf.c -@@ -9936,7 +9936,7 @@ int libbpf_find_vmlinux_btf_id(const char *name, - return libbpf_err(err); - } - --static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) -+static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd, int token_fd) - { - struct bpf_prog_info info; - __u32 info_len = sizeof(info); -@@ -9956,7 +9956,7 @@ static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) - pr_warn("The target program doesn't have BTF\n"); - goto out; - } -- btf = btf__load_from_kernel_by_id(info.btf_id); -+ btf = btf_load_from_kernel(info.btf_id, NULL, token_fd); - err = libbpf_get_error(btf); - if (err) { - pr_warn("Failed to get BTF %d of the program: %d\n", info.btf_id, err); -@@ -10039,7 +10039,7 @@ static int libbpf_find_attach_btf_id(struct bpf_program *prog, const char *attac - pr_warn("prog '%s': attach program FD is not set\n", prog->name); - return -EINVAL; - } -- err = libbpf_find_prog_btf_id(attach_name, attach_prog_fd); -+ err = libbpf_find_prog_btf_id(attach_name, attach_prog_fd, prog->obj->token_fd); - if (err < 0) { - pr_warn("prog '%s': failed to find BPF program (FD %d) BTF ID for '%s': %d\n", - prog->name, attach_prog_fd, attach_name, err); -@@ -12804,7 +12804,7 @@ struct bpf_link *bpf_program__attach_freplace(const struct bpf_program *prog, - if (target_fd) { - LIBBPF_OPTS(bpf_link_create_opts, target_opts); - -- btf_id = libbpf_find_prog_btf_id(attach_func_name, target_fd); -+ btf_id = libbpf_find_prog_btf_id(attach_func_name, target_fd, prog->obj->token_fd); - if (btf_id < 0) - return libbpf_err_ptr(btf_id); - -@@ -13629,7 +13629,7 @@ int bpf_program__set_attach_target(struct bpf_program *prog, - - if (attach_prog_fd) { - btf_id = libbpf_find_prog_btf_id(attach_func_name, -- attach_prog_fd); -+ attach_prog_fd, prog->obj->token_fd); - if (btf_id < 0) - return libbpf_err(btf_id); - } else { -diff --git a/tools/lib/bpf/libbpf_internal.h b/tools/lib/bpf/libbpf_internal.h -index 408df59e07719..bd7adb8594d40 100644 ---- a/tools/lib/bpf/libbpf_internal.h -+++ b/tools/lib/bpf/libbpf_internal.h -@@ -408,6 +408,7 @@ int libbpf__load_raw_btf(const char *raw_types, size_t types_len, - int btf_load_into_kernel(struct btf *btf, - char *log_buf, size_t log_sz, __u32 log_level, - int token_fd); -+struct btf *btf_load_from_kernel(__u32 id, struct btf *base_btf, int token_fd); - - struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf); - void btf_get_kernel_prefix_kind(enum bpf_attach_type attach_type, --- -2.39.5 - diff --git a/queue-6.12/series b/queue-6.12/series index eb08b83302..b63ae5147e 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -135,7 +135,6 @@ hypfs_create_cpu_files-add-missing-check-for-hypfs_m.patch scsi-st-tighten-the-page-format-heuristics-with-mode.patch scsi-st-erase-does-not-change-tape-location.patch vfio-pci-handle-intx-irq_notconnected.patch -libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch bpf-return-prog-btf_id-without-capable-check.patch pci-dwc-use-resource-start-as-ioremap-input-in-dw_pc.patch jbd2-do-not-try-to-recover-wiped-journal.patch diff --git a/queue-6.14/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch b/queue-6.14/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch deleted file mode 100644 index 59485a418a..0000000000 --- a/queue-6.14/libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 7a8beec7026564efe57ebf9c4c568ed0071f2e39 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 17 Mar 2025 17:40:38 +0000 -Subject: libbpf: Pass BPF token from find_prog_btf_id to BPF_BTF_GET_FD_BY_ID - -From: Mykyta Yatsenko - -[ Upstream commit 974ef9f0d23edc1a802691c585b84514b414a96d ] - -Pass BPF token from bpf_program__set_attach_target to -BPF_BTF_GET_FD_BY_ID bpf command. -When freplace program attaches to target program, it needs to look up -for BTF of the target, this may require BPF token, if, for example, -running from user namespace. - -Signed-off-by: Mykyta Yatsenko -Signed-off-by: Andrii Nakryiko -Acked-by: Yonghong Song -Link: https://lore.kernel.org/bpf/20250317174039.161275-4-mykyta.yatsenko5@gmail.com -Signed-off-by: Sasha Levin ---- - tools/lib/bpf/bpf.c | 3 ++- - tools/lib/bpf/bpf.h | 3 ++- - tools/lib/bpf/btf.c | 15 +++++++++++++-- - tools/lib/bpf/libbpf.c | 10 +++++----- - tools/lib/bpf/libbpf_internal.h | 1 + - 5 files changed, 23 insertions(+), 9 deletions(-) - -diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c -index 359f73ead6137..a9c3e33d0f8a9 100644 ---- a/tools/lib/bpf/bpf.c -+++ b/tools/lib/bpf/bpf.c -@@ -1097,7 +1097,7 @@ int bpf_map_get_fd_by_id(__u32 id) - int bpf_btf_get_fd_by_id_opts(__u32 id, - const struct bpf_get_fd_by_id_opts *opts) - { -- const size_t attr_sz = offsetofend(union bpf_attr, open_flags); -+ const size_t attr_sz = offsetofend(union bpf_attr, fd_by_id_token_fd); - union bpf_attr attr; - int fd; - -@@ -1107,6 +1107,7 @@ int bpf_btf_get_fd_by_id_opts(__u32 id, - memset(&attr, 0, attr_sz); - attr.btf_id = id; - attr.open_flags = OPTS_GET(opts, open_flags, 0); -+ attr.fd_by_id_token_fd = OPTS_GET(opts, token_fd, 0); - - fd = sys_bpf_fd(BPF_BTF_GET_FD_BY_ID, &attr, attr_sz); - return libbpf_err_errno(fd); -diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h -index 435da95d20589..777627d33d257 100644 ---- a/tools/lib/bpf/bpf.h -+++ b/tools/lib/bpf/bpf.h -@@ -487,9 +487,10 @@ LIBBPF_API int bpf_link_get_next_id(__u32 start_id, __u32 *next_id); - struct bpf_get_fd_by_id_opts { - size_t sz; /* size of this struct for forward/backward compatibility */ - __u32 open_flags; /* permissions requested for the operation on fd */ -+ __u32 token_fd; - size_t :0; - }; --#define bpf_get_fd_by_id_opts__last_field open_flags -+#define bpf_get_fd_by_id_opts__last_field token_fd - - LIBBPF_API int bpf_prog_get_fd_by_id(__u32 id); - LIBBPF_API int bpf_prog_get_fd_by_id_opts(__u32 id, -diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c -index 560b519f820e2..03cc7c46c16b5 100644 ---- a/tools/lib/bpf/btf.c -+++ b/tools/lib/bpf/btf.c -@@ -1619,12 +1619,18 @@ struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf) - return btf; - } - --struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) -+struct btf *btf_load_from_kernel(__u32 id, struct btf *base_btf, int token_fd) - { - struct btf *btf; - int btf_fd; -+ LIBBPF_OPTS(bpf_get_fd_by_id_opts, opts); -+ -+ if (token_fd) { -+ opts.open_flags |= BPF_F_TOKEN_FD; -+ opts.token_fd = token_fd; -+ } - -- btf_fd = bpf_btf_get_fd_by_id(id); -+ btf_fd = bpf_btf_get_fd_by_id_opts(id, &opts); - if (btf_fd < 0) - return libbpf_err_ptr(-errno); - -@@ -1634,6 +1640,11 @@ struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) - return libbpf_ptr(btf); - } - -+struct btf *btf__load_from_kernel_by_id_split(__u32 id, struct btf *base_btf) -+{ -+ return btf_load_from_kernel(id, base_btf, 0); -+} -+ - struct btf *btf__load_from_kernel_by_id(__u32 id) - { - return btf__load_from_kernel_by_id_split(id, NULL); -diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c -index 194809da51725..6b436ec872b0f 100644 ---- a/tools/lib/bpf/libbpf.c -+++ b/tools/lib/bpf/libbpf.c -@@ -9959,7 +9959,7 @@ int libbpf_find_vmlinux_btf_id(const char *name, - return libbpf_err(err); - } - --static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) -+static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd, int token_fd) - { - struct bpf_prog_info info; - __u32 info_len = sizeof(info); -@@ -9979,7 +9979,7 @@ static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) - pr_warn("The target program doesn't have BTF\n"); - goto out; - } -- btf = btf__load_from_kernel_by_id(info.btf_id); -+ btf = btf_load_from_kernel(info.btf_id, NULL, token_fd); - err = libbpf_get_error(btf); - if (err) { - pr_warn("Failed to get BTF %d of the program: %s\n", info.btf_id, errstr(err)); -@@ -10062,7 +10062,7 @@ static int libbpf_find_attach_btf_id(struct bpf_program *prog, const char *attac - pr_warn("prog '%s': attach program FD is not set\n", prog->name); - return -EINVAL; - } -- err = libbpf_find_prog_btf_id(attach_name, attach_prog_fd); -+ err = libbpf_find_prog_btf_id(attach_name, attach_prog_fd, prog->obj->token_fd); - if (err < 0) { - pr_warn("prog '%s': failed to find BPF program (FD %d) BTF ID for '%s': %s\n", - prog->name, attach_prog_fd, attach_name, errstr(err)); -@@ -12858,7 +12858,7 @@ struct bpf_link *bpf_program__attach_freplace(const struct bpf_program *prog, - if (target_fd) { - LIBBPF_OPTS(bpf_link_create_opts, target_opts); - -- btf_id = libbpf_find_prog_btf_id(attach_func_name, target_fd); -+ btf_id = libbpf_find_prog_btf_id(attach_func_name, target_fd, prog->obj->token_fd); - if (btf_id < 0) - return libbpf_err_ptr(btf_id); - -@@ -13679,7 +13679,7 @@ int bpf_program__set_attach_target(struct bpf_program *prog, - - if (attach_prog_fd) { - btf_id = libbpf_find_prog_btf_id(attach_func_name, -- attach_prog_fd); -+ attach_prog_fd, prog->obj->token_fd); - if (btf_id < 0) - return libbpf_err(btf_id); - } else { -diff --git a/tools/lib/bpf/libbpf_internal.h b/tools/lib/bpf/libbpf_internal.h -index de498e2dd6b0b..76669c73dcd16 100644 ---- a/tools/lib/bpf/libbpf_internal.h -+++ b/tools/lib/bpf/libbpf_internal.h -@@ -409,6 +409,7 @@ int libbpf__load_raw_btf(const char *raw_types, size_t types_len, - int btf_load_into_kernel(struct btf *btf, - char *log_buf, size_t log_sz, __u32 log_level, - int token_fd); -+struct btf *btf_load_from_kernel(__u32 id, struct btf *base_btf, int token_fd); - - struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf); - void btf_get_kernel_prefix_kind(enum bpf_attach_type attach_type, --- -2.39.5 - diff --git a/queue-6.14/series b/queue-6.14/series index ed994c003f..b95c4b642c 100644 --- a/queue-6.14/series +++ b/queue-6.14/series @@ -160,7 +160,6 @@ scsi-st-tighten-the-page-format-heuristics-with-mode.patch scsi-st-erase-does-not-change-tape-location.patch vfio-pci-handle-intx-irq_notconnected.patch bpftool-using-the-right-format-specifiers.patch -libbpf-pass-bpf-token-from-find_prog_btf_id-to-bpf_b.patch bpf-return-prog-btf_id-without-capable-check.patch pci-dwc-use-resource-start-as-ioremap-input-in-dw_pc.patch jbd2-do-not-try-to-recover-wiped-journal.patch