From patchwork Wed Apr 18 04:42:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900119 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="RtUhb9kF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2qD12h3z9s3X for ; Wed, 18 Apr 2018 23:22:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754015AbeDRNWq (ORCPT ); Wed, 18 Apr 2018 09:22:46 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:38086 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753942AbeDRNWN (ORCPT ); Wed, 18 Apr 2018 09:22:13 -0400 Received: by mail-pf0-f195.google.com with SMTP id y69so910428pfb.5 for ; Wed, 18 Apr 2018 06:22:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jTRdjXz4vtVjejIy8MDHGwyf66unvynocXi8pD/AiqI=; b=RtUhb9kF7FkXmDj+g+MwQYWwMW6hJvd93PUH5FrbhtwblflyRmEWdorDFzHgoyN2ef slXUy+zMRfzyZyupJWwvMhrJs/PPV8wzS2pMU+SHi+yI9zHb4qLBMxncV7sSeiwEGKLq l1NlVusBzGAJxb22assnA2K3SmKpaGJU+mJjc/JsWr62LnZjyEeZXs2CHH0u5oUZwazH BEi8fcndh8Z3pIUHkjbSlxV8XNEXNGe4yKqXWv3yhBl7KG42J4VNFK7UTurr+dWPDGJm dHg1liecAGEQceWO0LOuGLIRvXjp6LHLoXm4hU1SK4VjWwATu3lsapNC17SjZ3aODb5l sOZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jTRdjXz4vtVjejIy8MDHGwyf66unvynocXi8pD/AiqI=; b=fmJGqnAzhVSgR83ACOJJMjbcUaVX23LLg1UPB/v0TLTyBxpkF4AKPTM39iPbATLcEF tFc4C0vYcif9oEy0j6J3V/lY3JeOb13FQx1FfD5X2/pJvyIAYlOJMBQFFJRc7bJwteYv VJDdIYGxWx1ZSbsTNT1IvDOcy/8BLFFoXefGNexxKTT+D890UH47XvYv834JXBLUSPvm 7cK1U317bhyjDuRPqmgiMsZihloySdYoOrYXyzmxMLqBg7+qMuvW5lbLuakbb8T7Ulf1 DdKIGGktwJ9D7O2VJns4J5HMTziVayw28EIGg40YWsB+TZ1vyXsP8Tykt8+7L58uyFQF DBMA== X-Gm-Message-State: ALQs6tBu3nCKJI8fvjcUP4A0oKKqpC8jarmIZYpdyWbpV83r2BpE3QVA Jek0Tu3luyZY1vuscNeG5ocWdQ== X-Google-Smtp-Source: AIpwx481aoD8v+6GSqBvlpUewJ1J633ehodi4Sn1CgYM2FZkP7RLo6aCclk5pcTZRrFZ7qHnX9v3bw== X-Received: by 10.98.217.88 with SMTP id s85mr2034604pfg.20.1524057732624; Wed, 18 Apr 2018 06:22:12 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:12 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Jason Wang , "David S. Miller" , "Michael S. Tsirkin" Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 07/11] bpf: make tun compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:19 -0700 Message-Id: <20180418044223.17685-8-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for tun driver we need to adjust XDP_PASS handling by recalculating length of the packet if it was passed to the TCP/IP stack (in case if after xdp's prog run data_end pointer was adjusted) Reviewed-by: Jason Wang Signed-off-by: Nikita V. Shirokov Acked-by: Michael S. Tsirkin --- drivers/net/tun.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 1e58be152d5c..901351a6ed21 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1696,6 +1696,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, return NULL; case XDP_PASS: delta = orig_data - xdp.data; + len = xdp.data_end - xdp.data; break; default: bpf_warn_invalid_xdp_action(act); @@ -1716,7 +1717,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, } skb_reserve(skb, pad - delta); - skb_put(skb, len + delta); + skb_put(skb, len); get_page(alloc_frag->page); alloc_frag->offset += buflen;