Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp660119ybf; Fri, 28 Feb 2020 05:20:48 -0800 (PST) X-Google-Smtp-Source: APXvYqwp1jbKZN5T+J4ZV5MCY5H9bYJFr08m8T52iIc3Oeyy4zBJo8cRtQSn+UgDtXWCMne4KKlC X-Received: by 2002:aca:5746:: with SMTP id l67mr3151669oib.60.1582896048307; Fri, 28 Feb 2020 05:20:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582896048; cv=none; d=google.com; s=arc-20160816; b=G9FrMbukmy3TXy0qpGEvKgGC4soEkXvHQakXUojASTfzopb9i1ZRRVJECW3usPUs2c z4S8fnTKHi5BL86vGESAzYoB98pDnbfp0uMg0JGmrEOeu9+v9tQ16n0a178GKfPRsCDq Ahjg3IPz/UVQRfiES+33ZpR6j0peZcH3fip6iywvjDx0lDheDnfg0NlEcA9yR8UGJpl+ 10yG90x2MXqWWf5jCc5wfzWEc/oqQ0rLuUs8L+XcOpDNF3hKLllxqXS/UHQplv+rnNi9 iAcAx+jjUcu9cZPS6DD+nZNMrTG5V80bo3eAfsEstBL8qKnLXEPuTljy9RtxN+bQ6Fq7 jFqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=a1o3ZaVxV/UHmnlqOInMF9HnyNuLw4+witDWbmSfAHA=; b=UVg/reV1fWAq0FGf1nqeu82a633n281OgdpOrE+eRWG0xpTt8H9V28+VmCkVEaqB2V EjRDEwPPVtdHevep2POwGWRE61THsIB873tfUTnncWW9FYjFiqvBZsPWNCkVOfdWn7iF 3Du3kq0Z0FSL7H8axLvdX6ND3rrPWUpGVPXSFz0+YJRY7ygaqCHY/74QRlGihwiUAvNJ ha2BTOfjhCN40lB8KyyHAZDfmnD713vrEfmGdhQEWbKg3hXUKqi0XN+USLqEAXJYXN8t DX1eQD+/qADMkqR71lBi9Y5cv0wGzj6dQDEfYhGAiKMI931X5bHSUMuU9kSgKJH7poaB J8Xg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=fY67vAMm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j11si1819902oie.254.2020.02.28.05.20.36; Fri, 28 Feb 2020 05:20:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=fY67vAMm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726658AbgB1NUI (ORCPT + 99 others); Fri, 28 Feb 2020 08:20:08 -0500 Received: from mail-ed1-f66.google.com ([209.85.208.66]:45961 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726413AbgB1NUI (ORCPT ); Fri, 28 Feb 2020 08:20:08 -0500 Received: by mail-ed1-f66.google.com with SMTP id h62so1384171edd.12 for ; Fri, 28 Feb 2020 05:20:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=a1o3ZaVxV/UHmnlqOInMF9HnyNuLw4+witDWbmSfAHA=; b=fY67vAMmBHerQM7XkvTQBkSA8tEf+aCHqDBjwlzp5a4bTCOvfypvTHAj/eaojnLgpC V0+x4GMOypHHEgXfD1t8O8qsBR/iRbzm6ukGvgnPNS39YyBh4c1F4r5dWQQ8wNXxJvE0 cjU7yXLgSVLiUvLfB/ngIGRXrStBYZo2mQNeA4qs6oR6KnhRzFgurZq0RkEVC5ao11bZ aPLkKZ10jKrw/5QDiUmqA4dWZtCMucPm1f8fo1E3pgBCQIDF7t++cfKSWXScAmAFpOgZ BG5crqbc3wGq04qzPo04HjySY5if6xLywXFJw+5r7Y/pKWEM9y763qH/a38E2wKuE1Hg 14Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=a1o3ZaVxV/UHmnlqOInMF9HnyNuLw4+witDWbmSfAHA=; b=uV4qclMN7PBrr8DIZnDtja0nbbpsR7ZLqW3B4yCzGsOH6QheDY+jLYdfdqlACyUFXm tP8JD6L2WHeExieFDx8utDujpjX7TY0mA7/s5xzUEw1OaQtfOcoyeItXgwZIbdr4SCJr izBt+zO0MZwsRweZPQPmdO9U2imMSTwyLSfOol3VAfyk+Wl9IJPrnu+QN3Zj3K0+Lli/ 5eXD/3wdWXHQ0xI8Nmwo6ke0DbSwJbLbnVpfoH+Zq8/fm53mQe/dDTR/5aFSv3IDeVwN SKqzqQqDy97hgsYW8ZW+dvI+N1NuEPKjT0gat37Mdnicqmp1MWp9QaXcbd1tf7ZWUK+f 9hPw== X-Gm-Message-State: APjAAAWOkYAfazoce0ot2PIqKVhYzKq9I6j7X4/MjQVmdOs21WmSxTj/ Ffr8dGfdCpp/gcjCoVneZ7XoB49oVZcWaSYzYa+CLQ== X-Received: by 2002:a05:6402:1694:: with SMTP id a20mr3977439edv.211.1582896005450; Fri, 28 Feb 2020 05:20:05 -0800 (PST) MIME-Version: 1.0 References: <20200228105435.75298-1-lrizzo@google.com> <20200228132941.2c8b8d01@carbon> In-Reply-To: <20200228132941.2c8b8d01@carbon> From: Luigi Rizzo Date: Fri, 28 Feb 2020 05:19:54 -0800 Message-ID: Subject: Re: [PATCH v4] netdev attribute to control xdpgeneric skb linearization To: Jesper Dangaard Brouer Cc: netdev@vger.kernel.org, =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , David Miller , Jesper Dangaard Brouer , sameehj@amazon.com, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 28, 2020 at 4:30 AM Jesper Dangaard Brouer wrote: > > On Fri, 28 Feb 2020 02:54:35 -0800 > Luigi Rizzo wrote: > > > diff --git a/net/core/dev.c b/net/core/dev.c > > index dbbfff123196..c539489d3166 100644 > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -4520,9 +4520,12 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb, > > /* XDP packets must be linear and must have sufficient headroom > > * of XDP_PACKET_HEADROOM bytes. This is the guarantee that also > > * native XDP provides, thus we need to do it here as well. > > + * For non shared skbs, xdpgeneric_linearize controls linearization. > > */ > > - if (skb_cloned(skb) || skb_is_nonlinear(skb) || > > - skb_headroom(skb) < XDP_PACKET_HEADROOM) { > > + if (skb_cloned(skb) || > > + (skb->dev->xdpgeneric_linearize && > > + (skb_is_nonlinear(skb) || > > + skb_headroom(skb) < XDP_PACKET_HEADROOM))) { > > int hroom = XDP_PACKET_HEADROOM - skb_headroom(skb); > > int troom = skb->tail + skb->data_len - skb->end; > > > > Have you checked that calling bpf_xdp_adjust_tail() is not breaking anything? It won't leak memory or cause crashes if that is what you mean. Of course if there are more segments the effect won't be the desired one, as it will chop off the tail of the first segment. But this is an opt-in feature and requires the same permissions needed to load an xdp program, so I expect it to be used consciously. It would be nice if we had a flag in the xdp_buff to communicate that the packet is incomplete, but there isn't a way that I can see. cheers luigi