All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Duyck, Alexander H" <alexander.h.duyck@intel.com>
To: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"alexey.kodanev@oracle.com" <alexey.kodanev@oracle.com>
Cc: "davem@davemloft.net" <davem@davemloft.net>,
	"steffen.klassert@secunet.com" <steffen.klassert@secunet.com>
Subject: Re: [PATCH v2] gso: fix payload length when gso_size is zero
Date: Fri, 6 Oct 2017 16:37:40 +0000	[thread overview]
Message-ID: <1507307855.2098.58.camel@intel.com> (raw)
In-Reply-To: <1507305755-14393-1-git-send-email-alexey.kodanev@oracle.com>

On Fri, 2017-10-06 at 19:02 +0300, Alexey Kodanev wrote:
> When gso_size reset to zero for the tail segment in skb_segment(), later
> in ipv6_gso_segment(), __skb_udp_tunnel_segment() and gre_gso_segment()
> we will get incorrect results (payload length, pcsum) for that segment.
> inet_gso_segment() already has a check for gso_size before calculating
> payload.
> 
> The issue was found with LTP vxlan & gre tests over ixgbe NIC.
> 
> Fixes: 07b26c9454a2 ("gso: Support partial splitting at the frag_list pointer")
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>

Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>

> ---
> v2: also added skb_is_gso to gre_gso_segment() and __skb_udp_tunnel_segment()
> 
>  net/ipv4/gre_offload.c | 2 +-
>  net/ipv4/udp_offload.c | 2 +-
>  net/ipv6/ip6_offload.c | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/net/ipv4/gre_offload.c b/net/ipv4/gre_offload.c
> index d5cac99..8c72034 100644
> --- a/net/ipv4/gre_offload.c
> +++ b/net/ipv4/gre_offload.c
> @@ -98,7 +98,7 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
>  		greh = (struct gre_base_hdr *)skb_transport_header(skb);
>  		pcsum = (__sum16 *)(greh + 1);
>  
> -		if (gso_partial) {
> +		if (gso_partial && skb_is_gso(skb)) {
>  			unsigned int partial_adj;
>  
>  			/* Adjust checksum to account for the fact that
> diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c
> index 0932c85..6401574 100644
> --- a/net/ipv4/udp_offload.c
> +++ b/net/ipv4/udp_offload.c
> @@ -122,7 +122,7 @@ static struct sk_buff *__skb_udp_tunnel_segment(struct sk_buff *skb,
>  		 * will be using a length value equal to only one MSS sized
>  		 * segment instead of the entire frame.
>  		 */
> -		if (gso_partial) {
> +		if (gso_partial && skb_is_gso(skb)) {
>  			uh->len = htons(skb_shinfo(skb)->gso_size +
>  					SKB_GSO_CB(skb)->data_offset +
>  					skb->head - (unsigned char *)uh);
> diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
> index cdb3728..4a87f94 100644
> --- a/net/ipv6/ip6_offload.c
> +++ b/net/ipv6/ip6_offload.c
> @@ -105,7 +105,7 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
>  
>  	for (skb = segs; skb; skb = skb->next) {
>  		ipv6h = (struct ipv6hdr *)(skb_mac_header(skb) + nhoff);
> -		if (gso_partial)
> +		if (gso_partial && skb_is_gso(skb))
>  			payload_len = skb_shinfo(skb)->gso_size +
>  				      SKB_GSO_CB(skb)->data_offset +
>  				      skb->head - (unsigned char *)(ipv6h + 1);

  reply	other threads:[~2017-10-06 16:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-06 16:02 [PATCH v2] gso: fix payload length when gso_size is zero Alexey Kodanev
2017-10-06 16:37 ` Duyck, Alexander H [this message]
2017-10-08 17:13 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1507307855.2098.58.camel@intel.com \
    --to=alexander.h.duyck@intel.com \
    --cc=alexey.kodanev@oracle.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=steffen.klassert@secunet.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.