diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 8 | ||||
-rw-r--r-- | net/ipv6/route.c | 4 |
2 files changed, 2 insertions, 10 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 00e138a44cbb..1cc9650af9fb 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -1133,12 +1133,8 @@ route_lookup: | |||
1133 | max_headroom += 8; | 1133 | max_headroom += 8; |
1134 | mtu -= 8; | 1134 | mtu -= 8; |
1135 | } | 1135 | } |
1136 | if (skb->protocol == htons(ETH_P_IPV6)) { | 1136 | mtu = max(mtu, skb->protocol == htons(ETH_P_IPV6) ? |
1137 | if (mtu < IPV6_MIN_MTU) | 1137 | IPV6_MIN_MTU : IPV4_MIN_MTU); |
1138 | mtu = IPV6_MIN_MTU; | ||
1139 | } else if (mtu < 576) { | ||
1140 | mtu = 576; | ||
1141 | } | ||
1142 | 1138 | ||
1143 | skb_dst_update_pmtu(skb, mtu); | 1139 | skb_dst_update_pmtu(skb, mtu); |
1144 | if (skb->len - t->tun_hlen - eth_hlen > mtu && !skb_is_gso(skb)) { | 1140 | if (skb->len - t->tun_hlen - eth_hlen > mtu && !skb_is_gso(skb)) { |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index ec18b3ce8b6d..7208c16302f6 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -978,10 +978,6 @@ static void rt6_set_from(struct rt6_info *rt, struct fib6_info *from) | |||
978 | rt->rt6i_flags &= ~RTF_EXPIRES; | 978 | rt->rt6i_flags &= ~RTF_EXPIRES; |
979 | rcu_assign_pointer(rt->from, from); | 979 | rcu_assign_pointer(rt->from, from); |
980 | dst_init_metrics(&rt->dst, from->fib6_metrics->metrics, true); | 980 | dst_init_metrics(&rt->dst, from->fib6_metrics->metrics, true); |
981 | if (from->fib6_metrics != &dst_default_metrics) { | ||
982 | rt->dst._metrics |= DST_METRICS_REFCOUNTED; | ||
983 | refcount_inc(&from->fib6_metrics->refcnt); | ||
984 | } | ||
985 | } | 981 | } |
986 | 982 | ||
987 | /* Caller must already hold reference to @ort */ | 983 | /* Caller must already hold reference to @ort */ |