public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@redhat•com>
To: Jesper Dangaard Brouer <brouer@redhat•com>, sameehj@amazon•com
Cc: netdev@vger•kernel.org, bpf@vger•kernel.org, zorik@amazon•com,
	akiyano@amazon•com, gtzalik@amazon•com,
	Daniel Borkmann <borkmann@iogearbox•net>,
	Alexei Starovoitov <alexei.starovoitov@gmail•com>,
	John Fastabend <john.fastabend@gmail•com>,
	Alexander Duyck <alexander.duyck@gmail•com>,
	Jeff Kirsher <jeffrey.t.kirsher@intel•com>,
	David Ahern <dsahern@gmail•com>,
	Willem de Bruijn <willemdebruijn.kernel@gmail•com>,
	Ilias Apalodimas <ilias.apalodimas@linaro•org>,
	Lorenzo Bianconi <lorenzo@kernel•org>,
	Saeed Mahameed <saeedm@mellanox•com>,
	brouer@redhat•com
Subject: Re: [PATCH RFC v2 29/33] xdp: allow bpf_xdp_adjust_tail() to grow packet size
Date: Tue, 14 Apr 2020 12:11:33 +0200	[thread overview]
Message-ID: <87v9m2nzqi.fsf@toke.dk> (raw)
In-Reply-To: <20200414115656.2f0e6ac0@carbon>

Jesper Dangaard Brouer <brouer@redhat•com> writes:

> On Wed, 08 Apr 2020 13:53:01 +0200 Jesper Dangaard Brouer <brouer@redhat•com> wrote:
>
>> diff --git a/net/core/filter.c b/net/core/filter.c
>> index 7628b947dbc3..4d58a147eed0 100644
>> --- a/net/core/filter.c
>> +++ b/net/core/filter.c
>> @@ -3422,12 +3422,26 @@ static const struct bpf_func_proto bpf_xdp_adjust_head_proto = {
>>  
>>  BPF_CALL_2(bpf_xdp_adjust_tail, struct xdp_buff *, xdp, int, offset)
>>  {
>> +	void *data_hard_end = xdp_data_hard_end(xdp);
>>  	void *data_end = xdp->data_end + offset;
>>  
> [...]
>> +	/* DANGER: ALL drivers MUST be converted to init xdp->frame_sz
>> +	 * - Adding some chicken checks below
>> +	 * - Will (likely) not be for upstream
>> +	 */
>> +	if (unlikely(xdp->frame_sz < (xdp->data_end - xdp->data_hard_start))) {
>> +		WARN(1, "Too small xdp->frame_sz = %d\n", xdp->frame_sz);
>> +		return -EINVAL;
>> +	}
>> +	if (unlikely(xdp->frame_sz > PAGE_SIZE)) {
>> +		WARN(1, "Too BIG xdp->frame_sz = %d\n", xdp->frame_sz);
>> +		return -EINVAL;
>> +	}
>
> Any opinions on above checks?
> Should they be removed or kept?
>
> The idea is to catch drivers that forgot to update xdp_buff->frame_sz,
> by doing some sanity checks on this uninit value.  If I correctly
> updated all XDP drivers in this patchset, then these checks should be
> unnecessary, but will this be valuable for driver developers converting
> new drivers to XDP to have these WARN checks?

Hmm, I wonder if there's a way we could have these kinds of checks
available, but disabled by default? A new macro (e.g.,
XDP_CHECK(condition)) that is only enabled when some debug option is
enabled in the kernel build, perhaps? Or just straight ifdef'ing them
out, but maybe a macro would be generally useful?

-Toke


  reply	other threads:[~2020-04-14 10:11 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <158634658714.707275.7903484085370879864.stgit@firesoul>
2020-04-08 11:50 ` [PATCH RFC v2 01/33] xdp: add frame size to xdp_buff Jesper Dangaard Brouer
2020-04-08 17:53   ` Jakub Kicinski
2020-04-09  0:48     ` Saeed Mahameed
2020-04-09  1:13       ` Jakub Kicinski
2020-04-09 23:07         ` Saeed Mahameed
2020-04-09 23:27           ` Jakub Kicinski
2020-04-14 14:16     ` Jesper Dangaard Brouer
2020-04-09  0:50   ` Saeed Mahameed
2020-04-16 13:02     ` Jesper Dangaard Brouer
2020-04-17 23:09       ` Saeed Mahameed
2020-04-08 11:50 ` [PATCH RFC v2 02/33] bnxt: add XDP frame size to driver Jesper Dangaard Brouer
2020-04-08 11:50 ` [PATCH RFC v2 03/33] sfc: add XDP frame size Jesper Dangaard Brouer
2020-04-08 11:50 ` [PATCH RFC v2 04/33] mvneta: add XDP frame size to driver Jesper Dangaard Brouer
2020-04-08 11:50 ` [PATCH RFC v2 05/33] net: netsec: Add support for XDP frame size Jesper Dangaard Brouer
2020-04-08 13:09   ` Lorenzo Bianconi
2020-04-14  8:07     ` Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 06/33] net: XDP-generic determining " Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 07/33] xdp: xdp_frame add member frame_sz and handle in convert_to_xdp_frame Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 08/33] xdp: cpumap redirect use frame_sz and increase skb_tailroom Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 09/33] veth: adjust hard_start offset on redirect XDP frames Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 10/33] veth: xdp using frame_sz in veth driver Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 11/33] dpaa2-eth: add XDP frame size Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 12/33] hv_netvsc: add XDP frame size to driver Jesper Dangaard Brouer
2020-04-08 14:56   ` Haiyang Zhang
2020-04-08 11:51 ` [PATCH RFC v2 13/33] qlogic/qede: " Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 14/33] net: ethernet: ti: add XDP frame size to driver cpsw Jesper Dangaard Brouer
2020-04-08 11:51 ` [PATCH RFC v2 15/33] ena: add XDP frame size to amazon NIC driver Jesper Dangaard Brouer
2020-04-22  8:39   ` Jubran, Samih
2020-04-08 11:51 ` [PATCH RFC v2 16/33] mlx4: add XDP frame size and adjust max XDP MTU Jesper Dangaard Brouer
2020-04-08 12:57   ` Tariq Toukan
2020-04-14  8:19     ` Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 17/33] mlx5: rx queue setup time determine frame_sz for XDP Jesper Dangaard Brouer
2020-04-08 12:52   ` Tariq Toukan
2020-04-16 12:04     ` Jesper Dangaard Brouer
2020-04-09  9:28   ` Maxim Mikityanskiy
2020-04-08 11:52 ` [PATCH RFC v2 18/33] net: thunderx: add XDP frame size Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 19/33] nfp: add XDP frame size to netronome driver Jesper Dangaard Brouer
2020-04-08 17:53   ` Jakub Kicinski
2020-04-14 14:02     ` Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 20/33] tun: add XDP frame size Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 21/33] vhost_net: also populate " Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 22/33] virtio_net: add XDP frame size in two code paths Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 23/33] ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 24/33] ixgbe: add XDP frame size to driver Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 25/33] ixgbevf: add XDP frame size to VF driver Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 26/33] i40e: add XDP frame size to driver Jesper Dangaard Brouer
2020-04-08 21:48   ` David Miller
2020-04-14 10:16     ` Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 27/33] ice: " Jesper Dangaard Brouer
2020-04-08 11:52 ` [PATCH RFC v2 28/33] xdp: for Intel AF_XDP drivers add XDP frame_sz Jesper Dangaard Brouer
2020-04-08 17:31   ` Björn Töpel
2020-04-09  9:33     ` Maxim Mikityanskiy
2020-04-08 11:53 ` [PATCH RFC v2 29/33] xdp: allow bpf_xdp_adjust_tail() to grow packet size Jesper Dangaard Brouer
2020-04-09  3:31   ` Saeed Mahameed
2020-04-14 12:46     ` Jesper Dangaard Brouer
2020-04-18  3:33       ` Saeed Mahameed
2020-04-14  9:56   ` Jesper Dangaard Brouer
2020-04-14 10:11     ` Toke Høiland-Jørgensen [this message]
2020-04-08 11:53 ` [PATCH RFC v2 30/33] xdp: clear grow memory in bpf_xdp_adjust_tail() Jesper Dangaard Brouer
2020-04-08 21:49   ` David Miller
2020-04-14  9:43     ` Jesper Dangaard Brouer
2020-04-08 11:53 ` [PATCH RFC v2 31/33] bpf: add xdp.frame_sz in bpf_prog_test_run_xdp() Jesper Dangaard Brouer
2020-04-08 11:53 ` [PATCH RFC v2 32/33] selftests/bpf: adjust BPF selftest for xdp_adjust_tail Jesper Dangaard Brouer
2020-04-08 11:53 ` [PATCH RFC v2 33/33] selftests/bpf: xdp_adjust_tail add grow tail tests Jesper Dangaard Brouer
2020-04-08 16:55 ` [PATCH RFC v2 00/33] XDP extend with knowledge of frame size Alexei Starovoitov

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=87v9m2nzqi.fsf@toke.dk \
    --to=toke@redhat$(echo .)com \
    --cc=akiyano@amazon$(echo .)com \
    --cc=alexander.duyck@gmail$(echo .)com \
    --cc=alexei.starovoitov@gmail$(echo .)com \
    --cc=borkmann@iogearbox$(echo .)net \
    --cc=bpf@vger$(echo .)kernel.org \
    --cc=brouer@redhat$(echo .)com \
    --cc=dsahern@gmail$(echo .)com \
    --cc=gtzalik@amazon$(echo .)com \
    --cc=ilias.apalodimas@linaro$(echo .)org \
    --cc=jeffrey.t.kirsher@intel$(echo .)com \
    --cc=john.fastabend@gmail$(echo .)com \
    --cc=lorenzo@kernel$(echo .)org \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=saeedm@mellanox$(echo .)com \
    --cc=sameehj@amazon$(echo .)com \
    --cc=willemdebruijn.kernel@gmail$(echo .)com \
    --cc=zorik@amazon$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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