summaryrefslogtreecommitdiff
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-15 20:27:12 +0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-15 20:27:12 +0400
commitcd2d95d97c8d1b66467507400c63d707ddb1deba (patch)
tree7ad5223ba88110ca6735637c9eef327515e9bb96 /net/ipv6/tcp_ipv6.c
parent88dd75af0e49e1dabef6f7c7f7f4fa0234b9b988 (diff)
parent41ef2d5678d83af030125550329b6ae8b74618fa (diff)
downloadlinux-cd2d95d97c8d1b66467507400c63d707ddb1deba.tar.xz
Merge tag 'v3.9-rc7' into regulator-fix-core
Linux 3.9-rc7 Trivial context overlap conflicts: MAINTAINERS
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r--net/ipv6/tcp_ipv6.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 9b6460055df5..46a5be85be87 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -386,9 +386,17 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
if (dst)
dst->ops->redirect(dst, sk, skb);
+ goto out;
}
if (type == ICMPV6_PKT_TOOBIG) {
+ /* We are not interested in TCP_LISTEN and open_requests
+ * (SYN-ACKs send out by Linux are always <576bytes so
+ * they should go through unfragmented).
+ */
+ if (sk->sk_state == TCP_LISTEN)
+ goto out;
+
tp->mtu_info = ntohl(info);
if (!sock_owned_by_user(sk))
tcp_v6_mtu_reduced(sk);