From patchwork Tue Mar 5 00:27:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Oskolkov X-Patchwork-Id: 1051569 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=pass (p=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="tEK8ACs1"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44CyQP3HZsz9s4Y for ; Tue, 5 Mar 2019 11:27:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726906AbfCEA1Y (ORCPT ); Mon, 4 Mar 2019 19:27:24 -0500 Received: from mail-it1-f202.google.com ([209.85.166.202]:60030 "EHLO mail-it1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726106AbfCEA1X (ORCPT ); Mon, 4 Mar 2019 19:27:23 -0500 Received: by mail-it1-f202.google.com with SMTP id q192so897343itb.9 for ; Mon, 04 Mar 2019 16:27:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=cNBof6mS24zSSiBiHUMFBSIiffzRwm5i6v67mTsj9DQ=; b=tEK8ACs1X3WlvluFNEddJ/xwjpUrAou4QxSTqY1EeDx+F40BK+teS5HTh6hV8ZQTAa RMtZp8Kj1DjIiK8JMVJgy+qTfgjkAmPmTgmbO6dEwbzCqVMY7nD+VtwtfeDZ9IjuwMRe 3VSwZwA0QYSYVEpsBN4WhTeyWQ2pij8wo1U2PkcJVqmj7P/8re4g6aVnXBTZ2mAJRfLC KW/OTTlJejXAULwYEbBIBK0ZNAkE5rMzzKYIFeVeYZZfu5hRJ5d0PgdxltR/rZ3i2LHV WnfSPSVjt6eZP+GqL5yaobz6jGrd4BYJLvpO0OEI61IFveSKh7vTZt76oU0OwjHPiZun q2nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=cNBof6mS24zSSiBiHUMFBSIiffzRwm5i6v67mTsj9DQ=; b=cbMTAtMCploHw4zhG7sghtI7XWTNKbTApKWEFTna5i9E4o6QGi0MczN5HJHHSASxEx MWdJZLVJxIA9eqwZe+woLA1znVywF+02ZMn4L778hjh3HBctgM9iBNQgfmEAhpRKdOi9 OzeiA988y9seZSD2O04iWwUZt8iOz6PZIp+txct3QNuFpEpKifQHzMGPVyXqBXhd81Om QG2GCOFSWSx3mNZZaHTNkS6RDNYtvzTVxsJY23lZVmdcnLzVCu87aqeQRM+QeibC3e/H OctTwH84oNp/qERY0XCX1ueI9+r1SAKAnyekJnqjiRUWhnuYlvBG10TA8z+OUqlZrQ5o NEfw== X-Gm-Message-State: APjAAAW18c+rvzacv3jNIaY2/C1TVfRyIOCD1u+mHWzyhkxqimpL8FFY czXbdgtfm5M7nAv/yU5EyRx2cAGM X-Google-Smtp-Source: APXvYqzO27jb1rjlpk3sJuXhc/R/m3iCx3KecHZa5chznwJIGMOF32Vl2XaFa1L8yBw8Lr5lcm24xS/A X-Received: by 2002:a24:5dc9:: with SMTP id w192mr1071175ita.33.1551745643331; Mon, 04 Mar 2019 16:27:23 -0800 (PST) Date: Mon, 4 Mar 2019 16:27:08 -0800 In-Reply-To: <20190305002709.156137-1-posk@google.com> Message-Id: <20190305002709.156137-2-posk@google.com> Mime-Version: 1.0 References: <20190305002709.156137-1-posk@google.com> X-Mailer: git-send-email 2.21.0.352.gf09ad66450-goog Subject: [PATCH net-next (fix) 1/2] net: fix GSO in bpf_lwt_push_ip_encap From: Peter Oskolkov To: David Miller , netdev@vger.kernel.org, Willem de Bruijn Cc: Peter Oskolkov , David Ahern , Peter Oskolkov Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org GSO needs inner headers and inner protocol set properly to work. skb->inner_mac_header: skb_reset_inner_headers() assigns the current mac header value to inner_mac_header; but it is not set at the point, so we need to call skb_reset_inner_mac_header, otherwise gre_gso_segment fails: it does int tnl_hlen = skb_inner_mac_header(skb) - skb_transport_header(skb); ... if (unlikely(!pskb_may_pull(skb, tnl_hlen))) ... skb->inner_protocol should also be correctly set. Fixes: ca78801a81e0 ("bpf: handle GSO in bpf_lwt_push_encap") Signed-off-by: Peter Oskolkov Reviewed-by: David Ahern --- net/core/lwt_bpf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/core/lwt_bpf.c b/net/core/lwt_bpf.c index cf2f8897ca19..126d31ff5ee3 100644 --- a/net/core/lwt_bpf.c +++ b/net/core/lwt_bpf.c @@ -625,6 +625,8 @@ int bpf_lwt_push_ip_encap(struct sk_buff *skb, void *hdr, u32 len, bool ingress) /* push the encap headers and fix pointers */ skb_reset_inner_headers(skb); + skb_reset_inner_mac_header(skb); /* mac header is not yet set */ + skb_set_inner_protocol(skb, skb->protocol); skb->encapsulation = 1; skb_push(skb, len); if (ingress)