diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 3ac6659869c4..dad98e4a5043 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
| @@ -222,10 +222,13 @@ static int tcp_v4_get_port(struct sock *sk, unsigned short snum) | |||
| 222 | int rover; | 222 | int rover; |
| 223 | 223 | ||
| 224 | spin_lock(&tcp_portalloc_lock); | 224 | spin_lock(&tcp_portalloc_lock); |
| 225 | rover = tcp_port_rover; | 225 | if (tcp_port_rover < low) |
| 226 | rover = low; | ||
| 227 | else | ||
| 228 | rover = tcp_port_rover; | ||
| 226 | do { | 229 | do { |
| 227 | rover++; | 230 | rover++; |
| 228 | if (rover < low || rover > high) | 231 | if (rover > high) |
| 229 | rover = low; | 232 | rover = low; |
| 230 | head = &tcp_bhash[tcp_bhashfn(rover)]; | 233 | head = &tcp_bhash[tcp_bhashfn(rover)]; |
| 231 | spin_lock(&head->lock); | 234 | spin_lock(&head->lock); |
