aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 1a8e89fdd331..4f6cfbc57775 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -5979,12 +5979,14 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
5979 * timewait bucket, so that all the necessary checks 5979 * timewait bucket, so that all the necessary checks
5980 * are made in the function processing timewait state. 5980 * are made in the function processing timewait state.
5981 */ 5981 */
5982 if (tmp_opt.saw_tstamp && tcp_death_row.sysctl_tw_recycle) { 5982 if (tcp_death_row.sysctl_tw_recycle) {
5983 bool strict; 5983 bool strict;
5984 5984
5985 dst = af_ops->route_req(sk, &fl, req, &strict); 5985 dst = af_ops->route_req(sk, &fl, req, &strict);
5986
5986 if (dst && strict && 5987 if (dst && strict &&
5987 !tcp_peer_is_proven(req, dst, true)) { 5988 !tcp_peer_is_proven(req, dst, true,
5989 tmp_opt.saw_tstamp)) {
5988 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_PAWSPASSIVEREJECTED); 5990 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_PAWSPASSIVEREJECTED);
5989 goto drop_and_release; 5991 goto drop_and_release;
5990 } 5992 }
@@ -5993,7 +5995,8 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
5993 else if (!sysctl_tcp_syncookies && 5995 else if (!sysctl_tcp_syncookies &&
5994 (sysctl_max_syn_backlog - inet_csk_reqsk_queue_len(sk) < 5996 (sysctl_max_syn_backlog - inet_csk_reqsk_queue_len(sk) <
5995 (sysctl_max_syn_backlog >> 2)) && 5997 (sysctl_max_syn_backlog >> 2)) &&
5996 !tcp_peer_is_proven(req, dst, false)) { 5998 !tcp_peer_is_proven(req, dst, false,
5999 tmp_opt.saw_tstamp)) {
5997 /* Without syncookies last quarter of 6000 /* Without syncookies last quarter of
5998 * backlog is filled with destinations, 6001 * backlog is filled with destinations,
5999 * proven to be alive. 6002 * proven to be alive.