From: Jiri Olsa <olsajiri@gmail.com>
To: Yonghong Song <yonghong.song@linux.dev>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
kernel-team@fb.com, Martin KaFai Lau <martin.lau@kernel.org>
Subject: Re: [RFC PATCH bpf-next 1/5] bpf: Add link support for sk_msg prog
Date: Mon, 11 Mar 2024 09:30:27 +0100 [thread overview]
Message-ID: <Ze7BI241JAWya1eo@krava> (raw)
In-Reply-To: <20240305202201.3891042-1-yonghong.song@linux.dev>
On Tue, Mar 05, 2024 at 12:22:00PM -0800, Yonghong Song wrote:
SNIP
> +
> +int bpf_skmsg_link_create(const union bpf_attr *attr, struct bpf_prog *prog)
> +{
> + struct bpf_link_primer link_primer;
> + struct bpf_skmsg_link *skmsg_link;
> + enum bpf_attach_type attach_type;
> + struct bpf_map *map;
> + int ret;
> +
> + if (attr->link_create.flags)
> + return -EINVAL;
> +
> + map = bpf_map_get_with_uref(attr->link_create.target_fd);
> + if (IS_ERR(map))
> + return PTR_ERR(map);
> +
> + skmsg_link = kzalloc(sizeof(*skmsg_link), GFP_USER);
> + if (!skmsg_link) {
> + ret = -ENOMEM;
> + goto out;
> + }
> +
> + attach_type = attr->link_create.attach_type;
> + bpf_link_init(&skmsg_link->link, BPF_LINK_TYPE_SK_MSG, &bpf_skmsg_link_ops, prog);
> + skmsg_link->map = map;
> + skmsg_link->attach_type = attach_type;
> +
> + ret = bpf_link_prime(&skmsg_link->link, &link_primer);
> + if (ret) {
> + kfree(skmsg_link);
> + goto out;
> + }
> +
> + ret = sock_map_prog_update(map, prog, NULL, attach_type);
> + if (ret) {
> + bpf_link_cleanup(&link_primer);
> + goto out;
> + }
> +
> + bpf_prog_inc(prog);
there's already prog ref taken in link_create, is this needed?
also I might be missing some skmsg logic, but I can't see thi
being released
jirka
> +
> + return bpf_link_settle(&link_primer);
> +
> +out:
> + bpf_map_put_with_uref(map);
> + return ret;
> +}
> diff --git a/net/core/sock_map.c b/net/core/sock_map.c
> index 27d733c0f65e..63372bc368f1 100644
> --- a/net/core/sock_map.c
> +++ b/net/core/sock_map.c
> @@ -24,8 +24,6 @@ struct bpf_stab {
> #define SOCK_CREATE_FLAG_MASK \
> (BPF_F_NUMA_NODE | BPF_F_RDONLY | BPF_F_WRONLY)
>
> -static int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog,
> - struct bpf_prog *old, u32 which);
> static struct sk_psock_progs *sock_map_progs(struct bpf_map *map);
>
> static struct bpf_map *sock_map_alloc(union bpf_attr *attr)
> @@ -1488,8 +1486,8 @@ static int sock_map_prog_lookup(struct bpf_map *map, struct bpf_prog ***pprog,
> return 0;
> }
>
> -static int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog,
> - struct bpf_prog *old, u32 which)
> +int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog,
> + struct bpf_prog *old, u32 which)
> {
> struct bpf_prog **pprog;
> int ret;
> diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
> index a241f407c234..c7d2a5fcf37a 100644
> --- a/tools/include/uapi/linux/bpf.h
> +++ b/tools/include/uapi/linux/bpf.h
> @@ -1129,6 +1129,7 @@ enum bpf_link_type {
> BPF_LINK_TYPE_TCX = 11,
> BPF_LINK_TYPE_UPROBE_MULTI = 12,
> BPF_LINK_TYPE_NETKIT = 13,
> + BPF_LINK_TYPE_SK_MSG = 14,
> __MAX_BPF_LINK_TYPE,
> };
>
> @@ -6699,6 +6700,10 @@ struct bpf_link_info {
> __u32 ifindex;
> __u32 attach_type;
> } netkit;
> + struct {
> + __u32 map_id;
> + __u32 attach_type;
> + } skmsg;
> };
> } __attribute__((aligned(8)));
>
> --
> 2.43.0
>
>
next prev parent reply other threads:[~2024-03-11 8:30 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-05 20:21 [RFC PATCH bpf-next 0/5] Add bpf_link support for sk_msg prog Yonghong Song
2024-03-05 20:22 ` [RFC PATCH bpf-next 1/5] bpf: Add link " Yonghong Song
2024-03-09 0:59 ` Andrii Nakryiko
2024-03-09 18:41 ` Yonghong Song
2024-03-10 19:23 ` Jakub Sitnicki
2024-03-11 21:58 ` Yonghong Song
2024-03-11 8:30 ` Jiri Olsa [this message]
2024-03-11 22:07 ` Yonghong Song
2024-03-05 20:22 ` [RFC PATCH bpf-next 2/5] libbpf: Refactor bpf_program_attach_fd() Yonghong Song
2024-03-09 1:02 ` Andrii Nakryiko
2024-03-09 18:43 ` Yonghong Song
2024-03-05 20:22 ` [RFC PATCH bpf-next 3/5] libbpf: Add link support for BPF_PROG_TYPE_SK_MSG Yonghong Song
2024-03-09 1:01 ` Andrii Nakryiko
2024-03-09 18:49 ` Yonghong Song
2024-03-05 20:22 ` [RFC PATCH bpf-next 4/5] bpftool: Add link dump support for BPF_LINK_TYPE_SK_MSG Yonghong Song
2024-03-08 16:07 ` Jakub Sitnicki
2024-03-11 21:54 ` Yonghong Song
2024-03-05 20:22 ` [RFC PATCH bpf-next 5/5] selftests/bpf: Add some tests with new bpf_program__attach_sk_msg() API Yonghong Song
2024-03-06 19:19 ` [RFC PATCH bpf-next 0/5] Add bpf_link support for sk_msg prog John Fastabend
2024-03-07 22:47 ` Yonghong Song
2024-03-07 13:01 ` Jakub Sitnicki
2024-03-11 21:53 ` Yonghong Song
2024-03-10 19:52 ` Jakub Sitnicki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Ze7BI241JAWya1eo@krava \
--to=olsajiri@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=john.fastabend@gmail.com \
--cc=kernel-team@fb.com \
--cc=martin.lau@kernel.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox