diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 70b09ef2463b..eadb693eef55 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -496,6 +496,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) | |||
496 | * errors returned from accept(). | 496 | * errors returned from accept(). |
497 | */ | 497 | */ |
498 | inet_csk_reqsk_queue_drop(sk, req, prev); | 498 | inet_csk_reqsk_queue_drop(sk, req, prev); |
499 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); | ||
499 | goto out; | 500 | goto out; |
500 | 501 | ||
501 | case TCP_SYN_SENT: | 502 | case TCP_SYN_SENT: |
@@ -1500,8 +1501,10 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
1500 | * clogging syn queue with openreqs with exponentially increasing | 1501 | * clogging syn queue with openreqs with exponentially increasing |
1501 | * timeout. | 1502 | * timeout. |
1502 | */ | 1503 | */ |
1503 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) | 1504 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) { |
1505 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENOVERFLOWS); | ||
1504 | goto drop; | 1506 | goto drop; |
1507 | } | ||
1505 | 1508 | ||
1506 | req = inet_reqsk_alloc(&tcp_request_sock_ops); | 1509 | req = inet_reqsk_alloc(&tcp_request_sock_ops); |
1507 | if (!req) | 1510 | if (!req) |
@@ -1666,6 +1669,7 @@ drop_and_release: | |||
1666 | drop_and_free: | 1669 | drop_and_free: |
1667 | reqsk_free(req); | 1670 | reqsk_free(req); |
1668 | drop: | 1671 | drop: |
1672 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); | ||
1669 | return 0; | 1673 | return 0; |
1670 | } | 1674 | } |
1671 | EXPORT_SYMBOL(tcp_v4_conn_request); | 1675 | EXPORT_SYMBOL(tcp_v4_conn_request); |