[TCP]: 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 <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
4e07a91c37
Коммит
e4fd5da39f
|
@ -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;
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче