netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
	Yonghong Song <yhs@fb.com>, Andrii Nakryiko <andriin@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>,
	Eelco Chaudron <echaudro@redhat.com>,
	KP Singh <kpsingh@chromium.org>,
	netdev@vger.kernel.org, bpf@vger.kernel.org
Subject: Re: [PATCH bpf-next v8 04/11] bpf: move prog->aux->linked_prog and trampoline into bpf_link on attach
Date: Wed, 23 Sep 2020 17:14:39 -0700	[thread overview]
Message-ID: <20200924001439.qitbu5tmzz55ck4z@ast-mbp.dhcp.thefacebook.com> (raw)
In-Reply-To: <160079991808.8301.6462172487971110332.stgit@toke.dk>

On Tue, Sep 22, 2020 at 08:38:38PM +0200, Toke Høiland-Jørgensen wrote:
> @@ -746,7 +748,9 @@ struct bpf_prog_aux {
>  	u32 max_rdonly_access;
>  	u32 max_rdwr_access;
>  	const struct bpf_ctx_arg_aux *ctx_arg_info;
> -	struct bpf_prog *linked_prog;

This change breaks bpf_preload and selftests test_bpffs.
There is really no excuse not to run the selftests.

I think I will just start marking patches as changes-requested when I see that
they break tests without replying and without reviewing.
Please respect reviewer's time.

> +	struct mutex tgt_mutex; /* protects tgt_* pointers below, *after* prog becomes visible */
> +	struct bpf_prog *tgt_prog;
> +	struct bpf_trampoline *tgt_trampoline;
>  	bool verifier_zext; /* Zero extensions has been inserted by verifier. */
>  	bool offload_requested;
>  	bool attach_btf_trace; /* true if attaching to BTF-enabled raw tp */
...
>  struct bpf_tracing_link {
>  	struct bpf_link link;
>  	enum bpf_attach_type attach_type;
> +	struct bpf_trampoline *trampoline;
> +	struct bpf_prog *tgt_prog;

imo it's confusing to have 'tgt_prog' to mean two different things.
In prog->aux->tgt_prog it means target prog to attach to in the future.
Whereas here it means the existing prog that was used to attached to.
They kinda both 'target progs' but would be good to disambiguate.
May be keep it as 'tgt_prog' here and
rename to 'dest_prog' and 'dest_trampoline' in prog->aux ?

>  };
>  
>  static void bpf_tracing_link_release(struct bpf_link *link)
>  {
> -	WARN_ON_ONCE(bpf_trampoline_unlink_prog(link->prog));
> +	struct bpf_tracing_link *tr_link =
> +		container_of(link, struct bpf_tracing_link, link);
> +
> +	WARN_ON_ONCE(bpf_trampoline_unlink_prog(link->prog,
> +						tr_link->trampoline));
> +
> +	bpf_trampoline_put(tr_link->trampoline);
> +
> +	if (tr_link->tgt_prog)
> +		bpf_prog_put(tr_link->tgt_prog);

I had to scratch my head quite a bit before I understood this NULL check.
Could you add a comment saying that tr_link->tgt_prog can be NULL
when trampoline is for kernel function ?

  reply	other threads:[~2020-09-24  0:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-22 18:38 [PATCH bpf-next v8 00/11] bpf: Support multi-attach for freplace programs Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 01/11] bpf: disallow attaching modify_return tracing functions to other BPF programs Toke Høiland-Jørgensen
2020-09-23 17:25   ` Andrii Nakryiko
2020-09-22 18:38 ` [PATCH bpf-next v8 02/11] bpf: change logging calls from verbose() to bpf_log() and use log pointer Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 03/11] bpf: verifier: refactor check_attach_btf_id() Toke Høiland-Jørgensen
2020-09-23 23:54   ` Alexei Starovoitov
2020-09-22 18:38 ` [PATCH bpf-next v8 04/11] bpf: move prog->aux->linked_prog and trampoline into bpf_link on attach Toke Høiland-Jørgensen
2020-09-24  0:14   ` Alexei Starovoitov [this message]
2020-09-24 14:34     ` Toke Høiland-Jørgensen
2020-09-24 15:43       ` Alexei Starovoitov
2020-09-24 21:30         ` Toke Høiland-Jørgensen
2020-09-24 20:40       ` Andrii Nakryiko
2020-09-24 21:24         ` Toke Høiland-Jørgensen
2020-09-24 21:59           ` Andrii Nakryiko
2020-09-24 22:20             ` Toke Høiland-Jørgensen
2020-09-24 22:37               ` Andrii Nakryiko
2020-09-24 23:13                 ` Toke Høiland-Jørgensen
2020-09-24 21:59     ` Toke Høiland-Jørgensen
2020-09-25 15:45       ` Alexei Starovoitov
2020-09-25 20:57         ` Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 05/11] bpf: support attaching freplace programs to multiple attach points Toke Høiland-Jørgensen
2020-09-24  1:04   ` Alexei Starovoitov
2020-09-22 18:38 ` [PATCH bpf-next v8 06/11] bpf: Fix context type resolving for extension programs Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 07/11] libbpf: add support for freplace attachment in bpf_link_create Toke Høiland-Jørgensen
2020-09-23 17:28   ` Andrii Nakryiko
2020-09-23 20:58     ` Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 08/11] selftests: add test for multiple attachments of freplace program Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 09/11] selftests/bpf: Adding test for arg dereference in extension trace Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 10/11] selftests: Add selftest for disallowing modify_return attachment to freplace Toke Høiland-Jørgensen
2020-09-22 18:38 ` [PATCH bpf-next v8 11/11] selftests: Remove fmod_ret from benchmarks and test_overhead Toke Høiland-Jørgensen
2020-09-23 17:40   ` Andrii Nakryiko
2020-09-24  1:08   ` Alexei Starovoitov
2020-09-24  1:38     ` Andrii Nakryiko
2020-09-24 23:19       ` Toke Høiland-Jørgensen

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=20200924001439.qitbu5tmzz55ck4z@ast-mbp.dhcp.thefacebook.com \
    --to=alexei.starovoitov@gmail.com \
    --cc=andriin@fb.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=echaudro@redhat.com \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=kafai@fb.com \
    --cc=kpsingh@chromium.org \
    --cc=netdev@vger.kernel.org \
    --cc=songliubraving@fb.com \
    --cc=toke@redhat.com \
    --cc=yhs@fb.com \
    /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;
as well as URLs for NNTP newsgroup(s).