diff options
author | Eric Dumazet <edumazet@google.com> | 2017-12-11 16:17:39 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-13 19:13:58 +0100 |
commit | b5476022bbada3764609368f03329ca287528dc8 (patch) | |
tree | 93662637d298a843940b42d54ca36326f456db95 /net/ipv4/ip_tunnel.c | |
parent | ipv6: mcast: better catch silly mtu values (diff) | |
download | linux-b5476022bbada3764609368f03329ca287528dc8.tar.xz linux-b5476022bbada3764609368f03329ca287528dc8.zip |
ipv4: igmp: guard against silly MTU values
IPv4 stack reacts to changes to small MTU, by disabling itself under
RTNL.
But there is a window where threads not using RTNL can see a wrong
device mtu. This can lead to surprises, in igmp code where it is
assumed the mtu is suitable.
Fix this by reading device mtu once and checking IPv4 minimal MTU.
This patch adds missing IPV4_MIN_MTU define, to not abuse
ETH_MIN_MTU anymore.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_tunnel.c')
-rw-r--r-- | net/ipv4/ip_tunnel.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index fe6fee728ce4..5ddb1cb52bd4 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c @@ -349,8 +349,8 @@ static int ip_tunnel_bind_dev(struct net_device *dev) dev->needed_headroom = t_hlen + hlen; mtu -= (dev->hard_header_len + t_hlen); - if (mtu < 68) - mtu = 68; + if (mtu < IPV4_MIN_MTU) + mtu = IPV4_MIN_MTU; return mtu; } |