Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3866915pxb; Tue, 17 Nov 2020 05:46:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJzMqqwyEnWA4viuwQ4ekna6ZA71Hu8Wi0KOJ7MDSJUnvt2KWiOTlzleo0ekr1tXFEbwdrdL X-Received: by 2002:a50:e08e:: with SMTP id f14mr20330555edl.374.1605620765095; Tue, 17 Nov 2020 05:46:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605620765; cv=none; d=google.com; s=arc-20160816; b=XY/aFUw4TGrAG7URycugJjTvmRWiNDItZpU+Mts7gKk4uPU7s15PmdDG7hqE/aw1UP lHj8sbB9lyGVC5nsGGoNDE53etghD3dwGix219S8i0ks9z3IzF7WJZLLrp4ME7wDK+GQ vVHU6fHXr3QmD2P6Yu/aVlKtHSVfWZRiPo7NJrOuBKizHClSSUI3KGsS4jqumxrzo2ig TA063Uxd5tN9cJob3JDo9ez09MBnd9kb82pDLk2OvT+xqK8GfLOxIsmjO9bUDElbJP+8 d5WDytQrZ+oCTy9FvwkeKVjEjVVsIfx7lo1ynT7wZM7j7j5bXE2pV6K7B9odXbj+IWNw /i/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QUK7R+UmtG3AVHehmuSVdc1YtXHdNeypvUA9DmeIo18=; b=hfM87vDBdc51msrFAvQkVFwHJF/cYcMUIXXSk6IkhXMDZos0pn8sCu33ltFhB3XfXj 9eqy+1rnQrA3nbJ5ygXceGyDg1lyZ032mm0vm8E67stynW422ZrdTm/Wrvd8lEdUHW2b GAtR3hNd/lZzDLgmgX9TVbMyocCTMB2Mo3ZD4cuQuG/MST43iCQxjlJvsAdT8I9FlWa5 5jrH8ZOWYq1VyDO4y1uBtOrX6CMmrizkrrZ+nrHJRdV6TWorf2VFTAtk96/I9B008P/q crK4wgUA4BSVZFJkKiN4aI29k2KS44WE3D3bOZeZe6zNp6WBl7qhDWcNQCK91EsO2N1U rDoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zDPBc1F1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k9si13040808ejx.605.2020.11.17.05.45.42; Tue, 17 Nov 2020 05:46:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zDPBc1F1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733115AbgKQNoT (ORCPT + 99 others); Tue, 17 Nov 2020 08:44:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:54386 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733258AbgKQNlu (ORCPT ); Tue, 17 Nov 2020 08:41:50 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4CE6920729; Tue, 17 Nov 2020 13:41:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605620509; bh=3FlSneyxjugV8U/0LdRGkzFHyixXJ7CnPmTZNGA6tZA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zDPBc1F14i/VCrsJm1vMOS6ocjGDNKUwUOrvpKs7HuHOqMk1mFXU7r36EqlNaVRPD jS0vcvqFS5HEO5ZZwMp1k6aL5qqiSWAS7xeh+vhZyqK4LnKvHL5tDWYl08afBAxDT6 myoQKVY4VknqnpQrbeHpP5cd5df3d0xxnGZhohBY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Eric Dumazet , Alexander Lobakin , Willem de Bruijn , Jakub Kicinski Subject: [PATCH 5.9 243/255] net: udp: fix UDP header access on Fast/frag0 UDP GRO Date: Tue, 17 Nov 2020 14:06:23 +0100 Message-Id: <20201117122150.763312048@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201117122138.925150709@linuxfoundation.org> References: <20201117122138.925150709@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexander Lobakin [ Upstream commit 4b1a86281cc1d0de46df3ad2cb8c1f86ac07681c ] UDP GRO uses udp_hdr(skb) in its .gro_receive() callback. While it's probably OK for non-frag0 paths (when all headers or even the entire frame are already in skb head), this inline points to junk when using Fast GRO (napi_gro_frags() or napi_gro_receive() with only Ethernet header in skb head and all the rest in the frags) and breaks GRO packet compilation and the packet flow itself. To support both modes, skb_gro_header_fast() + skb_gro_header_slow() are typically used. UDP even has an inline helper that makes use of them, udp_gro_udphdr(). Use that instead of troublemaking udp_hdr() to get rid of the out-of-order delivers. Present since the introduction of plain UDP GRO in 5.0-rc1. Fixes: e20cf8d3f1f7 ("udp: implement GRO for plain UDP sockets.") Cc: Eric Dumazet Signed-off-by: Alexander Lobakin Acked-by: Willem de Bruijn Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- net/ipv4/udp_offload.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c @@ -366,7 +366,7 @@ out: static struct sk_buff *udp_gro_receive_segment(struct list_head *head, struct sk_buff *skb) { - struct udphdr *uh = udp_hdr(skb); + struct udphdr *uh = udp_gro_udphdr(skb); struct sk_buff *pp = NULL; struct udphdr *uh2; struct sk_buff *p;