diff options
Diffstat (limited to 'net/ipv4/inet_connection_sock.c')
-rw-r--r-- | net/ipv4/inet_connection_sock.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index 21fcc5a9045f..bd1278a2d828 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c | |||
@@ -30,20 +30,22 @@ EXPORT_SYMBOL(inet_csk_timer_bug_msg); | |||
30 | #endif | 30 | #endif |
31 | 31 | ||
32 | /* | 32 | /* |
33 | * This array holds the first and last local port number. | 33 | * This struct holds the first and last local port number. |
34 | */ | 34 | */ |
35 | int sysctl_local_port_range[2] = { 32768, 61000 }; | 35 | struct local_ports sysctl_local_ports __read_mostly = { |
36 | DEFINE_SEQLOCK(sysctl_port_range_lock); | 36 | .lock = SEQLOCK_UNLOCKED, |
37 | .range = { 32768, 61000 }, | ||
38 | }; | ||
37 | 39 | ||
38 | void inet_get_local_port_range(int *low, int *high) | 40 | void inet_get_local_port_range(int *low, int *high) |
39 | { | 41 | { |
40 | unsigned seq; | 42 | unsigned seq; |
41 | do { | 43 | do { |
42 | seq = read_seqbegin(&sysctl_port_range_lock); | 44 | seq = read_seqbegin(&sysctl_local_ports.lock); |
43 | 45 | ||
44 | *low = sysctl_local_port_range[0]; | 46 | *low = sysctl_local_ports.range[0]; |
45 | *high = sysctl_local_port_range[1]; | 47 | *high = sysctl_local_ports.range[1]; |
46 | } while (read_seqretry(&sysctl_port_range_lock, seq)); | 48 | } while (read_seqretry(&sysctl_local_ports.lock, seq)); |
47 | } | 49 | } |
48 | EXPORT_SYMBOL(inet_get_local_port_range); | 50 | EXPORT_SYMBOL(inet_get_local_port_range); |
49 | 51 | ||