diff options
author | David S. Miller <davem@davemloft.net> | 2018-03-29 16:12:47 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-29 16:12:47 +0200 |
commit | 020295d95e13478ecbbbe2f44398ed4b4edb28df (patch) | |
tree | a683dd5e1661c6e0a83622f69cfc60afd45133ab /net/ipv4/ip_tunnel.c | |
parent | qede: Fix barrier usage after tx doorbell write. (diff) | |
parent | xfrm: Fix transport mode skb control buffer usage. (diff) | |
download | linux-020295d95e13478ecbbbe2f44398ed4b4edb28df.tar.xz linux-020295d95e13478ecbbbe2f44398ed4b4edb28df.zip |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec
Steffen Klassert says:
====================
pull request (net): ipsec 2018-03-29
1) Fix a rcu_read_lock/rcu_read_unlock imbalance
in the error path of xfrm_local_error().
From Taehee Yoo.
2) Some VTI MTU fixes. From Stefano Brivio.
3) Fix a too early overwritten skb control buffer
on xfrm transport mode.
Please note that this pull request has a merge conflict
in net/ipv4/ip_tunnel.c.
The conflict is between
commit f6cc9c054e77 ("ip_tunnel: Emit events for post-register MTU changes")
from the net tree and
commit 24fc79798b8d ("ip_tunnel: Clamp MTU to bounds on new link")
from the ipsec tree.
It can be solved as it is currently done in linux-next.
====================
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 | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index 7b85ffad5d74..f3db1f35a79d 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c @@ -1117,7 +1117,12 @@ int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[], eth_hw_addr_random(dev); mtu = ip_tunnel_bind_dev(dev); - if (!tb[IFLA_MTU]) { + if (tb[IFLA_MTU]) { + unsigned int max = 0xfff8 - dev->hard_header_len - nt->hlen; + + dev->mtu = clamp(dev->mtu, (unsigned int)ETH_MIN_MTU, + (unsigned int)(max - sizeof(struct iphdr))); + } else { err = dev_set_mtu(dev, mtu); if (err) goto err_dev_set_mtu; |