From e85017f5310419259122d4d63b651ac4257f216c Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Fri, 22 Dec 2006 11:42:26 -0800 Subject: [PATCH] --- yaml --- r: 44929 b: refs/heads/master c: 5c668704b7fa5a4ebf21a490ddfbd6dc2e01fc97 h: refs/heads/master i: 44927: e1608316f09e5a42f322bf50eb4e0da2dd9a751a v: v3 --- [refs] | 2 +- trunk/net/ipv4/udp.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 85f2108ff5c9..fd831ada6a88 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b23e3536667373e44f52a907f63cb55f75969490 +refs/heads/master: 5c668704b7fa5a4ebf21a490ddfbd6dc2e01fc97 diff --git a/trunk/net/ipv4/udp.c b/trunk/net/ipv4/udp.c index 035915fc9ed3..cfff930f2baf 100644 --- a/trunk/net/ipv4/udp.c +++ b/trunk/net/ipv4/udp.c @@ -165,11 +165,14 @@ int __udp_lib_get_port(struct sock *sk, unsigned short snum, goto gotit; } size = 0; - sk_for_each(sk2, node, head) - if (++size < best_size_so_far) { - best_size_so_far = size; - best = result; - } + sk_for_each(sk2, node, head) { + if (++size >= best_size_so_far) + goto next; + } + best_size_so_far = size; + best = result; + next: + ; } result = best; for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) {