[TCP]: Consolidate checking for tcp orphan count being too big.
authorPavel Emelianov <xemul@openvz.org>
Tue, 29 May 2007 20:19:18 +0000 (13:19 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 31 May 2007 08:23:34 +0000 (01:23 -0700)
tcp_out_of_resources() and tcp_close() perform the
same checking of number of orphan sockets. Move this
code into common place.

Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp.c
net/ipv4/tcp_timer.c

index e22b4f0305a339ce402b1e959ee0a64665fe2b1e..a8af9ae0017719bb7071ef5b34faa2c3f751a7b3 100644 (file)
@@ -254,6 +254,12 @@ static inline int between(__u32 seq1, __u32 seq2, __u32 seq3)
        return seq3 - seq2 >= seq1 - seq2;
 }
 
+static inline int tcp_too_many_orphans(struct sock *sk, int num)
+{
+       return (num > sysctl_tcp_max_orphans) ||
+               (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
+                atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2]);
+}
 
 extern struct proto tcp_prot;
 
index bd4c295f5d796347c2ba705710c417a50d6002fe..766314505c096b80ede892a483b5df9d35239da0 100644 (file)
@@ -1674,9 +1674,8 @@ adjudge_to_death:
        }
        if (sk->sk_state != TCP_CLOSE) {
                sk_stream_mem_reclaim(sk);
-               if (atomic_read(sk->sk_prot->orphan_count) > sysctl_tcp_max_orphans ||
-                   (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
-                    atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2])) {
+               if (tcp_too_many_orphans(sk,
+                               atomic_read(sk->sk_prot->orphan_count))) {
                        if (net_ratelimit())
                                printk(KERN_INFO "TCP: too many of orphaned "
                                       "sockets\n");
index 2ca97b20929d60540529c7af5cc46658ef4b70fb..e61340150ba6c3aacdf9d5012b7e50f382e5be4d 100644 (file)
@@ -78,9 +78,7 @@ static int tcp_out_of_resources(struct sock *sk, int do_reset)
        if (sk->sk_err_soft)
                orphans <<= 1;
 
-       if (orphans >= sysctl_tcp_max_orphans ||
-           (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
-            atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2])) {
+       if (tcp_too_many_orphans(sk, orphans)) {
                if (net_ratelimit())
                        printk(KERN_INFO "Out of socket memory\n");