diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 8 | 
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)  		 * no RST generated if md5 hash doesn't match.  		 */  		sk1 = inet6_lookup_listener(dev_net(skb_dst(skb)->dev), -					   &tcp_hashinfo, &ipv6h->saddr, +					   &tcp_hashinfo, NULL, 0, +					   &ipv6h->saddr,  					   th->source, &ipv6h->daddr,  					   ntohs(th->source), tcp_v6_iif(skb));  		if (!sk1) @@ -1375,8 +1376,8 @@ static int tcp_v6_rcv(struct sk_buff *skb)  	hdr = ipv6_hdr(skb);  lookup: -	sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest, -				inet6_iif(skb)); +	sk = __inet6_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), +				th->source, th->dest, inet6_iif(skb));  	if (!sk)  		goto no_tcp_socket; @@ -1500,6 +1501,7 @@ do_time_wait:  		struct sock *sk2;  		sk2 = inet6_lookup_listener(dev_net(skb->dev), &tcp_hashinfo, +					    skb, __tcp_hdrlen(th),  					    &ipv6_hdr(skb)->saddr, th->source,  					    &ipv6_hdr(skb)->daddr,  					    ntohs(th->dest), tcp_v6_iif(skb)); | 
