aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorNeal Cardwell <ncardwell@google.com>2014-08-14 12:40:05 -0400
committerDavid S. Miller <davem@davemloft.net>2014-08-14 17:38:54 -0400
commit4fab9071950c2021d846e18351e0f46a1cffd67b (patch)
treef7538ee4e32315a32ab45f3e7bb00e9c6a919bfa /net/ipv6
parentbc8fc7b8f825ef17a0fb9e68c18ce94fa66ab337 (diff)
tcp: fix tcp_release_cb() to dispatch via address family for mtu_reduced()
Make sure we use the correct address-family-specific function for handling MTU reductions from within tcp_release_cb(). Previously AF_INET6 sockets were incorrectly always using the IPv6 code path when sometimes they were handling IPv4 traffic and thus had an IPv4 dst. Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Diagnosed-by: Willem de Bruijn <willemb@google.com> Fixes: 563d34d057862 ("tcp: dont drop MTU reduction indications") Reviewed-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/tcp_ipv6.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index f2ce95502392..29964c3d363c 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1595,6 +1595,7 @@ static const struct inet_connection_sock_af_ops ipv6_specific = {
1595 .compat_setsockopt = compat_ipv6_setsockopt, 1595 .compat_setsockopt = compat_ipv6_setsockopt,
1596 .compat_getsockopt = compat_ipv6_getsockopt, 1596 .compat_getsockopt = compat_ipv6_getsockopt,
1597#endif 1597#endif
1598 .mtu_reduced = tcp_v6_mtu_reduced,
1598}; 1599};
1599 1600
1600#ifdef CONFIG_TCP_MD5SIG 1601#ifdef CONFIG_TCP_MD5SIG
@@ -1625,6 +1626,7 @@ static const struct inet_connection_sock_af_ops ipv6_mapped = {
1625 .compat_setsockopt = compat_ipv6_setsockopt, 1626 .compat_setsockopt = compat_ipv6_setsockopt,
1626 .compat_getsockopt = compat_ipv6_getsockopt, 1627 .compat_getsockopt = compat_ipv6_getsockopt,
1627#endif 1628#endif
1629 .mtu_reduced = tcp_v4_mtu_reduced,
1628}; 1630};
1629 1631
1630#ifdef CONFIG_TCP_MD5SIG 1632#ifdef CONFIG_TCP_MD5SIG
@@ -1864,7 +1866,6 @@ struct proto tcpv6_prot = {
1864 .sendpage = tcp_sendpage, 1866 .sendpage = tcp_sendpage,
1865 .backlog_rcv = tcp_v6_do_rcv, 1867 .backlog_rcv = tcp_v6_do_rcv,
1866 .release_cb = tcp_release_cb, 1868 .release_cb = tcp_release_cb,
1867 .mtu_reduced = tcp_v6_mtu_reduced,
1868 .hash = tcp_v6_hash, 1869 .hash = tcp_v6_hash,
1869 .unhash = inet_unhash, 1870 .unhash = inet_unhash,
1870 .get_port = inet_csk_get_port, 1871 .get_port = inet_csk_get_port,