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/ipv4/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/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index fbcd9be3a470..cf755156a684 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -423,12 +423,13 @@ static struct sock *udp4_lib_lookup2(struct net *net, | |||
423 | score = compute_score(sk, net, saddr, sport, | 423 | score = compute_score(sk, net, saddr, sport, |
424 | daddr, hnum, dif, sdif); | 424 | daddr, hnum, dif, sdif); |
425 | if (score > badness) { | 425 | if (score > badness) { |
426 | if (sk->sk_reuseport) { | 426 | if (sk->sk_reuseport && |
427 | sk->sk_state != TCP_ESTABLISHED) { | ||
427 | hash = udp_ehashfn(net, daddr, hnum, | 428 | hash = udp_ehashfn(net, daddr, hnum, |
428 | saddr, sport); | 429 | saddr, sport); |
429 | result = reuseport_select_sock(sk, hash, skb, | 430 | result = reuseport_select_sock(sk, hash, skb, |
430 | sizeof(struct udphdr)); | 431 | sizeof(struct udphdr)); |
431 | if (result) | 432 | if (result && !reuseport_has_conns(sk, false)) |
432 | return result; | 433 | return result; |
433 | } | 434 | } |
434 | badness = score; | 435 | badness = score; |