netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).