diff options
-rw-r--r-- | net/netfilter/xt_TCPMSS.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS.c index e118397254af..872db2d0e2a9 100644 --- a/net/netfilter/xt_TCPMSS.c +++ b/net/netfilter/xt_TCPMSS.c | |||
@@ -110,18 +110,14 @@ tcpmss_mangle_packet(struct sk_buff *skb, | |||
110 | if (info->mss == XT_TCPMSS_CLAMP_PMTU) { | 110 | if (info->mss == XT_TCPMSS_CLAMP_PMTU) { |
111 | struct net *net = par->net; | 111 | struct net *net = par->net; |
112 | unsigned int in_mtu = tcpmss_reverse_mtu(net, skb, family); | 112 | unsigned int in_mtu = tcpmss_reverse_mtu(net, skb, family); |
113 | unsigned int min_mtu = min(dst_mtu(skb_dst(skb)), in_mtu); | ||
113 | 114 | ||
114 | if (dst_mtu(skb_dst(skb)) <= minlen) { | 115 | if (min_mtu <= minlen) { |
115 | net_err_ratelimited("unknown or invalid path-MTU (%u)\n", | 116 | net_err_ratelimited("unknown or invalid path-MTU (%u)\n", |
116 | dst_mtu(skb_dst(skb))); | 117 | min_mtu); |
117 | return -1; | 118 | return -1; |
118 | } | 119 | } |
119 | if (in_mtu <= minlen) { | 120 | newmss = min_mtu - minlen; |
120 | net_err_ratelimited("unknown or invalid path-MTU (%u)\n", | ||
121 | in_mtu); | ||
122 | return -1; | ||
123 | } | ||
124 | newmss = min(dst_mtu(skb_dst(skb)), in_mtu) - minlen; | ||
125 | } else | 121 | } else |
126 | newmss = info->mss; | 122 | newmss = info->mss; |
127 | 123 | ||