On Mon, 3 Aug 2020 17:30:46 -0600
David Ahern <dsah...@gmail.com> wrote:

> On 8/3/20 2:52 PM, Stefano Brivio wrote:
> > diff --git a/net/ipv4/route.c b/net/ipv4/route.c
> > index a01efa062f6b..c14fd8124f57 100644
> > --- a/net/ipv4/route.c
> > +++ b/net/ipv4/route.c
> > @@ -1050,6 +1050,7 @@ static void ip_rt_update_pmtu(struct dst_entry *dst, 
> > struct sock *sk,
> >     struct flowi4 fl4;
> >  
> >     ip_rt_build_flow_key(&fl4, sk, skb);
> > +   fl4.flowi4_oif = 0;     /* Don't make lookup fail for encapsulations */
> >     __ip_rt_update_pmtu(rt, &fl4, mtu);
> >  }
> >  
> 
> Can this be limited to:
>       if (skb &&
>           netif_is_bridge_port(skb->dev) || netif_is_ovs_port(skb->dev))
>               fl4.flowi4_oif = 0;
> 
> I'm not sure we want to reset oif for all MTU updates.

I think that generally speaking we might, because this is about the
*path* MTU after all, so the output interface doesn't look very
relevant.

On the other hand, I couldn't find any other case where this makes a
difference, and I guess it's better to eventually find out about those
other cases if any, rather than fixing things by accident possibly in
the wrong way.

Changed in v2, thanks.

-- 
Stefano

Reply via email to