Hi Dave, first of all - I take my hat off to such astuteness in the light of a mailing list with an average of 100 postings per day and a massive throughput of patch submissions. It is clearly awesome to be able to relate individual changes in light of such a massive flood of patches.
However, I would also like to plead non-guilty. I have checked - what you are quoting is not the original patch. If you look at e.g. 2.6.17-mm1, the previous code had the form (this is copied from 2.6.17-mm1 original): size = 0; sk_for_each(sk2, node, list) if (++size >= best_size_so_far) goto next; best_size_so_far = size; best = result; next:; | and this got converted into: | | sk_for_each(sk2, node, head) | if (++size < best_size_so_far) { | best_size_so_far = size; | best = result; | } | | Which does something very very different from the original. ===> Sorry, I fail to see where the two differ. They have the same postcondition upon loop exit; sk2, node, size, and head are not referenced anywhere in the code that follows. | Signed-off-by: David S. Miller <[EMAIL PROTECTED]> | | diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c | index 9e1bd37..404dd21 100644 | --- a/net/ipv4/udp.c | +++ b/net/ipv4/udp.c | @@ -167,11 +167,14 @@ int udp_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) { | | - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html