Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp670599ybg; Mon, 1 Jun 2020 11:15:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFPuNkY6ddr5WuT8CDfEibzmj6pqd6KixhQSrWpkqZU2lBsvkvrTwLZpSYNVujD6u1ruze X-Received: by 2002:a17:906:22d0:: with SMTP id q16mr2607521eja.455.1591035345861; Mon, 01 Jun 2020 11:15:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591035345; cv=none; d=google.com; s=arc-20160816; b=bS6UQQutQrlLAg3Pq+mAEox3I2zkA4atCDLFUfTpEIPE+thV8CwnLX0lYJW84ACJQo JgtxO2iM97bpvxmwr3XbYKj0N+wac5oa3RKyVXPN4CnOT4Z1noRMEpVTirjBqVy+Sl3g a+iMCtx1RTC6v/jdSIXc7iqpN72eEivgYven3PQGAyy0cTVJw2Yr2EKotBeF9DQA9Nb2 98PH1zorLl2dAEnP8DjU+cKo0FEymJfuYqNHHBfXAN4LtB9Bj9l6yiC06qA9TvuEvUna SOipulfG7O6qVU2C7S0ZbauCLdTb3vHM+XZSntxOxbQvZFnbsWceleBmT6qV/w1nwVpF bvrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=gXNaAyaX1veZOpR0FnN+Zm1GUShlXRvP65xlidlaJzQ=; b=m1kLXF8pFMvGdhKNa9ztO1Hdfe1HwXW10+9or2XL8eT/vSj99rTWxj9x2xvGb9rGXf Xr8BLBFZT/+6xBJUBWO5xtEXXGKVG/3YlNMpL4ejQfU3pQyINv2I7DK6DDyopLbU5HHO e10k7gBWO3JS+DoEXM6DDY9J7P2Vt5NOLi9Tk2c+R29bjHm3RGl5RyL1RFcKiugIKJT0 wG6OuDPDbEqLVIdPMN/4k8P43qA24fuf8Rha0cm1vlbvRj1l6hanDp2Ym2epGh5HYBWk wvkqi57+KOWkCw8lZd/STzcRRqp7vuVqNhKirOFwsnlYeyRX1Haf3/LmQ/SHmRfP01HV 2BrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="P+MDhmO/"; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v26si127500ejb.491.2020.06.01.11.15.22; Mon, 01 Jun 2020 11:15:45 -0700 (PDT) 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="P+MDhmO/"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731042AbgFASK4 (ORCPT + 99 others); Mon, 1 Jun 2020 14:10:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:57678 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731012AbgFASKn (ORCPT ); Mon, 1 Jun 2020 14:10:43 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 B2053206E2; Mon, 1 Jun 2020 18:10:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591035042; bh=H7naidMd5Qa0u04rOXvuNj7VG6ToA776KEDM8xBVLYI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P+MDhmO/PbA39SKoyuYBQGOCKCYhIKN5WvJpAIbZvtl+5xEpo/Zk4bUZ7ttFTUe9b hKCfY/jA3HKMNO1ipS5G9qb00VBjXzHQagZk49UgXkxhv1AR4yzXt32Lrjf0JxCJqS n2NeGUSte516/Om3YPfStCMWxQy13FS4SJMWLDT0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xin Long , Steffen Klassert Subject: [PATCH 5.4 126/142] esp6: get the right proto for transport mode in esp6_gso_encap Date: Mon, 1 Jun 2020 19:54:44 +0200 Message-Id: <20200601174050.848248627@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200601174037.904070960@linuxfoundation.org> References: <20200601174037.904070960@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xin Long commit 3c96ec56828922e3fe5477f75eb3fc02f98f98b5 upstream. For transport mode, when ipv6 nexthdr is set, the packet format might be like: ---------------------------------------------------- | | dest | | | | ESP | ESP | | IP6 hdr| opts.| ESP | TCP | Data | Trailer | ICV | ---------------------------------------------------- What it wants to get for x-proto in esp6_gso_encap() is the proto that will be set in ESP nexthdr. So it should skip all ipv6 nexthdrs and get the real transport protocol. Othersize, the wrong proto number will be set into ESP nexthdr. This patch is to skip all ipv6 nexthdrs by calling ipv6_skip_exthdr() in esp6_gso_encap(). Fixes: 7862b4058b9f ("esp: Add gso handlers for esp4 and esp6") Signed-off-by: Xin Long Signed-off-by: Steffen Klassert Signed-off-by: Greg Kroah-Hartman --- net/ipv6/esp6_offload.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- a/net/ipv6/esp6_offload.c +++ b/net/ipv6/esp6_offload.c @@ -121,9 +121,16 @@ static void esp6_gso_encap(struct xfrm_s struct ip_esp_hdr *esph; struct ipv6hdr *iph = ipv6_hdr(skb); struct xfrm_offload *xo = xfrm_offload(skb); - int proto = iph->nexthdr; + u8 proto = iph->nexthdr; skb_push(skb, -skb_network_offset(skb)); + + if (x->outer_mode.encap == XFRM_MODE_TRANSPORT) { + __be16 frag; + + ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &proto, &frag); + } + esph = ip_esp_hdr(skb); *skb_mac_header(skb) = IPPROTO_ESP;