netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] udp: port starting location not random
@ 2012-10-04 21:08 Stephen Hemminger
  2012-10-04 21:12 ` David Miller
  0 siblings, 1 reply; 9+ messages in thread
From: Stephen Hemminger @ 2012-10-04 21:08 UTC (permalink / raw)
  To: Eric Dumazet, David Miller; +Cc: netdev

While working on VXLAN, noticed a bug in UDP introduced by:

commit 9088c5609584684149f3fb5b065aa7f18dcb03ff
Author: Eric Dumazet <dada1@cosmosbay.com>
Date:   Wed Oct 8 11:44:17 2008 -0700

    udp: Improve port randomization
    

The logic for choosing where to start for port randomization incorrectly
calculates the starting port number. It is always ends up using
the low end of the range independent of the value of random.
This causes all UDP port searches to start at the same port.

Doing the following fixes it but at the cost of doing a real divide.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

---
Resend, previous send was not going to netdev.

Not sure if worth fixing for stable, because only has performance impact
and some application might be depending on current broken behaviour.



--- a/net/ipv4/udp.c	2012-10-01 17:06:53.107427436 -0700
+++ b/net/ipv4/udp.c	2012-10-04 13:43:21.278960379 -0700
@@ -216,7 +216,7 @@ int udp_lib_get_port(struct sock *sk, un
 		remaining = (high - low) + 1;
 
 		rand = net_random();
-		first = (((u64)rand * remaining) >> 32) + low;
+		first = rand % remaining + low;
 		/*
 		 * force rand to be an odd multiple of UDP_HTABLE_SIZE
 		 */

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-10-04 22:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20121004.170103.1493867833710136820.davem@davemloft.net>
     [not found] ` <b400428e-ffe4-42ee-b656-99b0314d64f4@tahiti.vyatta.com>
2012-10-04 21:12   ` [PATCH] udp: port starting location not random David Miller
2012-10-04 21:08 Stephen Hemminger
2012-10-04 21:12 ` David Miller
2012-10-04 21:28   ` Stephen Hemminger
2012-10-04 21:45     ` Eric Dumazet
2012-10-04 21:50       ` David Miller
2012-10-04 21:57         ` Eric Dumazet
2012-10-04 22:06           ` Stephen Hemminger
2012-10-04 21:59         ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).