* [PATCH net] tcp: purge write queue upon aborting the connection
@ 2018-03-06 22:15 Soheil Hassas Yeganeh
2018-03-07 20:01 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Soheil Hassas Yeganeh @ 2018-03-06 22:15 UTC (permalink / raw)
To: davem, netdev
Cc: willemb, Soheil Hassas Yeganeh, Neal Cardwell, Yuchung Cheng
From: Soheil Hassas Yeganeh <soheil@google.com>
When the connection is aborted, there is no point in
keeping the packets on the write queue until the connection
is closed.
Similar to a27fd7a8ed38 ('tcp: purge write queue upon RST'),
this is essential for a correct MSG_ZEROCOPY implementation,
because userspace cannot call close(fd) before receiving
zerocopy signals even when the connection is aborted.
Fixes: f214f915e7db ("tcp: enable MSG_ZEROCOPY")
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
---
net/ipv4/tcp.c | 1 +
net/ipv4/tcp_timer.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 48636aee23c3..8b8059b7af4d 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -3566,6 +3566,7 @@ int tcp_abort(struct sock *sk, int err)
bh_unlock_sock(sk);
local_bh_enable();
+ tcp_write_queue_purge(sk);
release_sock(sk);
return 0;
}
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 71fc60f1b326..f7d944855f8e 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -34,6 +34,7 @@ static void tcp_write_err(struct sock *sk)
sk->sk_err = sk->sk_err_soft ? : ETIMEDOUT;
sk->sk_error_report(sk);
+ tcp_write_queue_purge(sk);
tcp_done(sk);
__NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONTIMEOUT);
}
--
2.16.2.395.g2e18187dfd-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net] tcp: purge write queue upon aborting the connection
2018-03-06 22:15 [PATCH net] tcp: purge write queue upon aborting the connection Soheil Hassas Yeganeh
@ 2018-03-07 20:01 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2018-03-07 20:01 UTC (permalink / raw)
To: soheil.kdev; +Cc: netdev, willemb, soheil, ncardwell, ycheng
From: Soheil Hassas Yeganeh <soheil.kdev@gmail.com>
Date: Tue, 6 Mar 2018 17:15:12 -0500
> From: Soheil Hassas Yeganeh <soheil@google.com>
>
> When the connection is aborted, there is no point in
> keeping the packets on the write queue until the connection
> is closed.
>
> Similar to a27fd7a8ed38 ('tcp: purge write queue upon RST'),
> this is essential for a correct MSG_ZEROCOPY implementation,
> because userspace cannot call close(fd) before receiving
> zerocopy signals even when the connection is aborted.
>
> Fixes: f214f915e7db ("tcp: enable MSG_ZEROCOPY")
> Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
> Signed-off-by: Neal Cardwell <ncardwell@google.com>
> Reviewed-by: Eric Dumazet <edumazet@google.com>
> Signed-off-by: Yuchung Cheng <ycheng@google.com>
Applied and queued up for -stable, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-03-07 20:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-06 22:15 [PATCH net] tcp: purge write queue upon aborting the connection Soheil Hassas Yeganeh
2018-03-07 20:01 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).