This patch fixed a possible division-by-zero in inet_csk_get_port
treating situation low > high as if low == high.

Signed-off-by: Denis V. Lunev <[EMAIL PROTECTED]>
CC: Antov Arapov  <[EMAIL PROTECTED]>

--- ./net/ipv4/inet_connection_sock.c.getport   2007-10-09 15:16:02.000000000 
+0400
+++ ./net/ipv4/inet_connection_sock.c   2007-10-10 12:44:04.000000000 +0400
@@ -80,7 +80,14 @@ int inet_csk_get_port(struct inet_hashin
                int low = sysctl_local_port_range[0];
                int high = sysctl_local_port_range[1];
                int remaining = (high - low) + 1;
-               int rover = net_random() % (high - low) + low;
+               int rover;
+
+               /* Treat low > high as high == low */
+               if (remaining <= 1) {
+                       remaining = 1;
+                       rover = low;
+               } else
+                       rover = net_random() % (high - low) + low;
 
                do {
                        head = &hashinfo->bhash[inet_bhashfn(rover, 
hashinfo->bhash_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

Reply via email to