Consolidate checking for tcp orphan count being too big
Subsystems (3)
PATCH 1/1 Consolidate checking for tcp orphan count being too big
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 <[email protected]>
---
include/net/tcp.h +6 -0
@@ -254,6 +254,12 @@ static inline int between(__u32 seq1, __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;
net/ipv4/tcp.c +2 -3
@@ -1675,9 +1675,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" );
net/ipv4/tcp_timer.c +1 -3
@@ -78,9 +78,7 @@ static int tcp_out_of_resources(struct sif (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" );