aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r--net/ipv6/tcp_ipv6.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index d72bcfb326d8..9977b6f19f2a 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -866,7 +866,8 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
866 * no RST generated if md5 hash doesn't match. 866 * no RST generated if md5 hash doesn't match.
867 */ 867 */
868 sk1 = inet6_lookup_listener(dev_net(skb_dst(skb)->dev), 868 sk1 = inet6_lookup_listener(dev_net(skb_dst(skb)->dev),
869 &tcp_hashinfo, &ipv6h->saddr, 869 &tcp_hashinfo, NULL, 0,
870 &ipv6h->saddr,
870 th->source, &ipv6h->daddr, 871 th->source, &ipv6h->daddr,
871 ntohs(th->source), tcp_v6_iif(skb)); 872 ntohs(th->source), tcp_v6_iif(skb));
872 if (!sk1) 873 if (!sk1)
@@ -1375,8 +1376,8 @@ static int tcp_v6_rcv(struct sk_buff *skb)
1375 hdr = ipv6_hdr(skb); 1376 hdr = ipv6_hdr(skb);
1376 1377
1377lookup: 1378lookup:
1378 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest, 1379 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th),
1379 inet6_iif(skb)); 1380 th->source, th->dest, inet6_iif(skb));
1380 if (!sk) 1381 if (!sk)
1381 goto no_tcp_socket; 1382 goto no_tcp_socket;
1382 1383
@@ -1500,6 +1501,7 @@ do_time_wait:
1500 struct sock *sk2; 1501 struct sock *sk2;
1501 1502
1502 sk2 = inet6_lookup_listener(dev_net(skb->dev), &tcp_hashinfo, 1503 sk2 = inet6_lookup_listener(dev_net(skb->dev), &tcp_hashinfo,
1504 skb, __tcp_hdrlen(th),
1503 &ipv6_hdr(skb)->saddr, th->source, 1505 &ipv6_hdr(skb)->saddr, th->source,
1504 &ipv6_hdr(skb)->daddr, 1506 &ipv6_hdr(skb)->daddr,
1505 ntohs(th->dest), tcp_v6_iif(skb)); 1507 ntohs(th->dest), tcp_v6_iif(skb));