netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Kicinski <jakub.kicinski@netronome.com>
To: netdev@vger.kernel.org
Cc: alexei.starovoitov@gmail.com, daniel@iogearbox.net,
	Jakub Kicinski <jakub.kicinski@netronome.com>
Subject: [PATCH net 01/10] bpf: offload: add comment warning developers about double destroy
Date: Sun, 19 Nov 2017 20:55:13 -0800	[thread overview]
Message-ID: <20171120045522.2188-2-jakub.kicinski@netronome.com> (raw)
In-Reply-To: <20171120045522.2188-1-jakub.kicinski@netronome.com>

Offload state may get destroyed either because the device for which
it was constructed is going away, or because the refcount of bpf
program itself has reached 0.  In both of those cases we will call
__bpf_prog_offload_destroy() to unlink the offload from the device.
We may in fact call it twice, which works just fine, but we should
make clear this is intended and caution others trying to extend the
function.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
---
 kernel/bpf/offload.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c
index 2816feb38be1..fd696d3dd429 100644
--- a/kernel/bpf/offload.c
+++ b/kernel/bpf/offload.c
@@ -85,6 +85,10 @@ static void __bpf_prog_offload_destroy(struct bpf_prog *prog)
 	struct bpf_dev_offload *offload = prog->aux->offload;
 	struct netdev_bpf data = {};
 
+	/* Caution - if netdev is destroyed before the program, this function
+	 * will be called twice.
+	 */
+
 	data.offload.prog = prog;
 
 	if (offload->verifier_running)
-- 
2.14.1

  reply	other threads:[~2017-11-20  4:56 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-20  4:55 [PATCH net 00/10] bpf: offload: check netdev pointer in the drivers and namespace trouble Jakub Kicinski
2017-11-20  4:55 ` Jakub Kicinski [this message]
2017-11-20  4:55 ` [PATCH net 02/10] bpf: offload: limit offload to cls_bpf and xdp programs only Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 03/10] bpf: offload: rename the ifindex field Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 04/10] bpf: offload: move offload device validation out to the drivers Jakub Kicinski
2017-11-20  7:11   ` Jiri Pirko
2017-11-20  4:55 ` [PATCH net 05/10] net: xdp: don't allow device-bound programs in driver mode Jakub Kicinski
2017-11-20 14:36   ` David Ahern
2017-11-20 22:02     ` Jakub Kicinski
2017-11-20 22:21       ` Daniel Borkmann
2017-11-20  4:55 ` [PATCH net 06/10] bpf: turn bpf_prog_get_type() into a wrapper Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 07/10] bpf: offload: ignore namespace moves Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 08/10] bpftool: revert printing program device bound info Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 09/10] bpf: revert report offload info to user space Jakub Kicinski
2017-11-20  4:55 ` [PATCH net 10/10] bpf: make bpf_prog_offload_verifier_prep() static inline Jakub Kicinski

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=20171120045522.2188-2-jakub.kicinski@netronome.com \
    --to=jakub.kicinski@netronome.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=daniel@iogearbox.net \
    --cc=netdev@vger.kernel.org \
    /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).