From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: Re: [PATCH] [PATCH net v2] ipv6: remove min MTU check for ipsec tunnels Date: Thu, 10 May 2018 10:05:05 -0700 Message-ID: References: <1525970887-26600-1-git-send-email-ashwanth@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: pabeni@redhat.com, dsahern@gmail.com To: Ashwanth Goli , netdev@vger.kernel.org, davem@davemloft.net Return-path: Received: from mail-pg0-f46.google.com ([74.125.83.46]:33229 "EHLO mail-pg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966425AbeEJRFH (ORCPT ); Thu, 10 May 2018 13:05:07 -0400 Received: by mail-pg0-f46.google.com with SMTP id i194-v6so1232536pgd.0 for ; Thu, 10 May 2018 10:05:07 -0700 (PDT) In-Reply-To: <1525970887-26600-1-git-send-email-ashwanth@codeaurora.org> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 05/10/2018 09:48 AM, Ashwanth Goli wrote: > With 749439bfac "fix udpv6 sendmsg crash caused by too small MTU" > ipsec tunnels that report a MTU less than IPV6_MIN_MTU are broken > even for packets that are smaller than IPV6_MIN_MTU. > > According to rfc2473#section-7.1 > > if the original IPv6 packet is equal or smaller than the > IPv6 minimum link MTU, the tunnel entry-point node > encapsulates the original packet, and subsequently > fragments the resulting IPv6 tunnel packet into IPv6 > fragments that do not exceed the Path MTU to the tunnel > exit-point. > > Dropping the MTU check for ipsec tunnel destinations. > > Signed-off-by: Ashwanth Goli > --- > net/ipv6/ip6_output.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c > index 2e891d2..c4c3313 100644 > --- a/net/ipv6/ip6_output.c > +++ b/net/ipv6/ip6_output.c > @@ -1235,7 +1235,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork, > if (np->frag_size) > mtu = np->frag_size; > } > - if (mtu < IPV6_MIN_MTU) > + if (!(rt->dst.flags & DST_XFRM_TUNNEL) && mtu < IPV6_MIN_MTU) > return -EINVAL; > cork->base.fragsize = mtu; > if (dst_allfrag(xfrm_dst_path(&rt->dst))) > Given that the (mtu < IPV6_MIN_MTU) condition is unlikely, I would reorder to : if (mtu < IPV6_MIN_MTU && !(rt->dst.flags & DST_XFRM_TUNNEL)) return -EINVAL; The fast path should not look at dst.flags