lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 3 Jan 2007 08:08:08 +0000
From:	Gerrit Renker <gerrit@....abdn.ac.uk>
To:	David Miller <davem@...emloft.net>
Cc:	netdev@...r.kernel.org, arnaldo.melo@...il.com
Subject: Re: removing gotos considered harmful...

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 <davem@...emloft.net>
|  
|  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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists