diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-11-28 17:56:10 +0100 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-11-28 17:56:10 +0100 | 
| commit | 9d1566e1f36b5167731372d2dfea97dbb4c43edf (patch) | |
| tree | 7eff84e5fd2c5758bb932d9e48ba1a5e43a80cad /net/ipv6/tcp_ipv6.c | |
| parent | 907140462eb511f3d98aa89c0665da1b618d3545 (diff) | |
| parent | b7b275e60bcd5f89771e865a8239325f86d9927d (diff) | |
Merge 6.1-rc7 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 20 | 
1 files changed, 4 insertions, 16 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 2a3f9296df1e..f0548dbcabd2 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -292,24 +292,11 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,  	tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;  	if (!saddr) { -		struct inet_bind_hashbucket *prev_addr_hashbucket = NULL; -		struct in6_addr prev_v6_rcv_saddr; - -		if (icsk->icsk_bind2_hash) { -			prev_addr_hashbucket = inet_bhashfn_portaddr(tcp_death_row->hashinfo, -								     sk, net, inet->inet_num); -			prev_v6_rcv_saddr = sk->sk_v6_rcv_saddr; -		}  		saddr = &fl6.saddr; -		sk->sk_v6_rcv_saddr = *saddr; -		if (prev_addr_hashbucket) { -			err = inet_bhash2_update_saddr(prev_addr_hashbucket, sk); -			if (err) { -				sk->sk_v6_rcv_saddr = prev_v6_rcv_saddr; -				goto failure; -			} -		} +		err = inet_bhash2_update_saddr(sk, saddr, AF_INET6); +		if (err) +			goto failure;  	}  	/* set the source address */ @@ -359,6 +346,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,  late_failure:  	tcp_set_state(sk, TCP_CLOSE); +	inet_bhash2_reset_saddr(sk);  failure:  	inet->inet_dport = 0;  	sk->sk_route_caps = 0;  | 
