mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
net: Disambiguate kernel message
Some of our machines were reporting: TCP: too many of orphaned sockets even when the number of orphaned sockets was well below the limit. We print a different message depending on whether we're out of TCP memory or there are too many orphaned sockets. Also move the check out of line and cleanup the messages that were printed. Signed-off-by: Arun Sharma <[email protected]> Suggested-by: Mohan Srinivasan <[email protected]> Cc: [email protected] Cc: [email protected] Cc: David Miller <[email protected]> Cc: Glauber Costa <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Joe Perches <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
48c3883999
commit
efcdbf24fd
3 changed files with 26 additions and 12 deletions
|
|
@ -1876,6 +1876,20 @@ void tcp_shutdown(struct sock *sk, int how)
|
|||
}
|
||||
EXPORT_SYMBOL(tcp_shutdown);
|
||||
|
||||
bool tcp_check_oom(struct sock *sk, int shift)
|
||||
{
|
||||
bool too_many_orphans, out_of_socket_memory;
|
||||
|
||||
too_many_orphans = tcp_too_many_orphans(sk, shift);
|
||||
out_of_socket_memory = tcp_out_of_memory(sk);
|
||||
|
||||
if (too_many_orphans && net_ratelimit())
|
||||
pr_info("TCP: too many orphaned sockets\n");
|
||||
if (out_of_socket_memory && net_ratelimit())
|
||||
pr_info("TCP: out of memory -- consider tuning tcp_mem\n");
|
||||
return too_many_orphans || out_of_socket_memory;
|
||||
}
|
||||
|
||||
void tcp_close(struct sock *sk, long timeout)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
|
@ -2015,10 +2029,7 @@ adjudge_to_death:
|
|||
}
|
||||
if (sk->sk_state != TCP_CLOSE) {
|
||||
sk_mem_reclaim(sk);
|
||||
if (tcp_too_many_orphans(sk, 0)) {
|
||||
if (net_ratelimit())
|
||||
printk(KERN_INFO "TCP: too many of orphaned "
|
||||
"sockets\n");
|
||||
if (tcp_check_oom(sk, 0)) {
|
||||
tcp_set_state(sk, TCP_CLOSE);
|
||||
tcp_send_active_reset(sk, GFP_ATOMIC);
|
||||
NET_INC_STATS_BH(sock_net(sk),
|
||||
|
|
|
|||
|
|
@ -77,10 +77,7 @@ static int tcp_out_of_resources(struct sock *sk, int do_reset)
|
|||
if (sk->sk_err_soft)
|
||||
shift++;
|
||||
|
||||
if (tcp_too_many_orphans(sk, shift)) {
|
||||
if (net_ratelimit())
|
||||
printk(KERN_INFO "Out of socket memory\n");
|
||||
|
||||
if (tcp_check_oom(sk, shift)) {
|
||||
/* Catch exceptional cases, when connection requires reset.
|
||||
* 1. Last segment was sent recently. */
|
||||
if ((s32)(tcp_time_stamp - tp->lsndtime) <= TCP_TIMEWAIT_LEN ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue