diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index d0d436d..69464b9 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -294,6 +294,11 @@ begin: sk_nulls_for_each_rcu(sk, node, &hslot->head) { score = compute_score(sk, net, saddr, hnum, sport, daddr, dport, dif); + if (score == 9) { + result = sk; + badness = score; + goto skip_end_of_nulls_check; + } if (score > badness) { result = sk; badness = score; @@ -307,6 +312,7 @@ begin: if (get_nulls_value(node) != hash) goto begin; +skip_end_of_nulls_check: if (result) { if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt))) result = NULL;