diff options
author | David S. Miller <davem@davemloft.net> | 2019-09-17 17:51:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-09-17 17:51:10 -0400 |
commit | 1bab8d4c488be22d57f9dd09968c90a0ddc413bf (patch) | |
tree | 81318cd13170a3b6b72489f63e92adb0eaf49693 /net/ipv6/udp.c | |
parent | 990925fad5c227269c3fcb76c7c46811b1e86c73 (diff) | |
parent | 00b368502d18f790ab715e055869fd4bb7484a9b (diff) |
Merge ra.kernel.org:/pub/scm/linux/kernel/git/netdev/net
Pull in bug fixes from 'net' tree for the merge window.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 2c8beb3896d1..aae4938f3dea 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -158,13 +158,14 @@ static struct sock *udp6_lib_lookup2(struct net *net, | |||
158 | score = compute_score(sk, net, saddr, sport, | 158 | score = compute_score(sk, net, saddr, sport, |
159 | daddr, hnum, dif, sdif); | 159 | daddr, hnum, dif, sdif); |
160 | if (score > badness) { | 160 | if (score > badness) { |
161 | if (sk->sk_reuseport) { | 161 | if (sk->sk_reuseport && |
162 | sk->sk_state != TCP_ESTABLISHED) { | ||
162 | hash = udp6_ehashfn(net, daddr, hnum, | 163 | hash = udp6_ehashfn(net, daddr, hnum, |
163 | saddr, sport); | 164 | saddr, sport); |
164 | 165 | ||
165 | result = reuseport_select_sock(sk, hash, skb, | 166 | result = reuseport_select_sock(sk, hash, skb, |
166 | sizeof(struct udphdr)); | 167 | sizeof(struct udphdr)); |
167 | if (result) | 168 | if (result && !reuseport_has_conns(sk, false)) |
168 | return result; | 169 | return result; |
169 | } | 170 | } |
170 | result = sk; | 171 | result = sk; |