Stephen Hemminger wrote: > int inet_csk_bind_conflict(const struct sock *sk, > const struct inet_bind_bucket *tb) > @@ -77,10 +90,11 @@ int inet_csk_get_port(struct inet_hashin > > local_bh_disable(); > if (!snum) { > - 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 remaining, range[2], rover; > + > + inet_get_local_port_range(range); > + remaining = range[1] - range[0]; > + rover = net_random() % (range[1] - range[0]) + range[0]; nit-pick: rover = net_random() % remaining + range[0]; > --- a/net/ipv4/udp.c 2007-10-10 08:27:00.000000000 -0700 > +++ b/net/ipv4/udp.c 2007-10-10 09:44:35.000000000 -0700 > @@ -147,13 +147,13 @@ int __udp_lib_get_port(struct sock *sk, > write_lock_bh(&udp_hash_lock); > > if (!snum) { > - int i; > - int low = sysctl_local_port_range[0]; > - int high = sysctl_local_port_range[1]; > + int i, range[2]; > unsigned rover, best, best_size_so_far; Should these be signed ints? They're the only ones that are unsigned, but I don't know why. > --- a/net/sctp/protocol.c 2007-10-10 08:27:00.000000000 -0700 > +++ b/net/sctp/protocol.c 2007-10-10 09:58:21.000000000 -0700 > @@ -1173,7 +1173,6 @@ SCTP_STATIC __init int sctp_init(void) > } > > spin_lock_init(&sctp_port_alloc_lock); > - sctp_port_rover = sysctl_local_port_range[0] - 1; I think you can remove the port_rover definition in sctp/structs.h and also the lock that protects it. Patch below for that which can be applied on-top of yours. -Brian Remove SCTP port_rover and port_alloc_lock as they're no longer required. Signed-off-by: Brian Haley