From patchwork Tue Feb 27 23:32:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soheil Hassas Yeganeh X-Patchwork-Id: 878867 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kctDEH7h"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zrZjj1NlZz9s1q for ; Wed, 28 Feb 2018 10:32:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751868AbeB0XcW (ORCPT ); Tue, 27 Feb 2018 18:32:22 -0500 Received: from mail-qk0-f194.google.com ([209.85.220.194]:35173 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751307AbeB0XcV (ORCPT ); Tue, 27 Feb 2018 18:32:21 -0500 Received: by mail-qk0-f194.google.com with SMTP id s188so800516qkb.2 for ; Tue, 27 Feb 2018 15:32:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=zrJ5Svp0w4I5cjay3nwnQA2sPkcZuNlclEG4Ai4Cpbo=; b=kctDEH7hBr+6+xhpd11Svrdqso0ID1ykxCp15MQzrsBm6BNPJcqSbUk65LmDnQUonw Zc3+XypJ42SafOQaUgCalAQUCmXxaR0dopk2iAf0CQkPIIy/D79IWzd7VcxBAfJlWZXL CdLybT9UQNa8dufJCIwKSFKjXdgKGm0VF90v0uxHMXBwccnNaFRl1EHl48z0e5/aF9sa szqrcIsdt3oXxokR1kQ4pG2cHVcg8R1ARrtq3PKVN7/L+gEFHIGIubxCB5MODamVYSrC KDp5tcLYVX1OROV/Z1tbL5du4d0C/iECoTRKnbBcHoxalOyoQaNEXPBQNg0jh7smQVAR UF5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=zrJ5Svp0w4I5cjay3nwnQA2sPkcZuNlclEG4Ai4Cpbo=; b=WA92P1SP+pTkiZPK8NSeksqhhc4p6Y3ePGoSdtjEjnMhvpzSRRFnj43svXQEBpf6Ne fXLJ2YL1Cn0oL1SqoB8cloqFcjM97Y7wnTHby5oT3M8pbmQ942UpgscbSjNnRX8CfH1e 7qAa1qfbqQX+U4vyCfTJjr8rMRmmMlKszixVTKPx6FOHDpCguiKw4m7BZ9dgjbebynrZ A5xAfEooaR4vyxNELytGNP+qVFLK/Qny1DV5eY0tQ2BKa0hGoc1srFdQXdjchQIR8JkE dcO0NbijmkVFQSkLdraMtgcXMEKK5FtbRlWKRQQHW/3IdZNBQuxMP4FIVq3RikILk7K0 JlBg== X-Gm-Message-State: APf1xPATIOHCzYw0nLhPMerwpkCew5hE3h7HLh95Igx9OiyFsh5n/w89 8S7FwpZmucIBG5gtvNJ+Rug= X-Google-Smtp-Source: AG47ELuyfRcITiWJouviEXF19f9V2KmJmvCaAUaUsYqt5eKdpIspApdWCvbl+IVI33ZG+4kxUmF5wQ== X-Received: by 10.55.162.73 with SMTP id l70mr6930824qke.124.1519774340641; Tue, 27 Feb 2018 15:32:20 -0800 (PST) Received: from z.nyc.corp.google.com ([2620:0:1003:315:9c67:ffa0:44c0:d273]) by smtp.gmail.com with ESMTPSA id x28sm262136qtx.20.2018.02.27.15.32.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Feb 2018 15:32:20 -0800 (PST) From: Soheil Hassas Yeganeh To: davem@davemloft.net, netdev@vger.kernel.org Cc: edumazet@google.com, willemb@google.com, Soheil Hassas Yeganeh , Yuchung Cheng , Neal Cardwell Subject: [PATCH net] tcp: purge write queue upon RST Date: Tue, 27 Feb 2018 18:32:18 -0500 Message-Id: <20180227233218.158382-1-soheil.kdev@gmail.com> X-Mailer: git-send-email 2.16.2.395.g2e18187dfd-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Soheil Hassas Yeganeh When the connection is reset, there is no point in keeping the packets on the write queue until the connection is closed. RFC 793 (page 70) and RFC 793-bis (page 64) both suggest purging the write queue upon RST: https://tools.ietf.org/html/draft-ietf-tcpm-rfc793bis-07 Moreover, this is essential for a correct MSG_ZEROCOPY implementation, because userspace cannot call close(fd) before receiving zerocopy signals even when the connection is reset. Fixes: f214f915e7db ("tcp: enable MSG_ZEROCOPY") Signed-off-by: Soheil Hassas Yeganeh Reviewed-by: Eric Dumazet Signed-off-by: Yuchung Cheng Signed-off-by: Neal Cardwell --- net/ipv4/tcp_input.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 06b9c4765f42..b17fac2629c3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3998,6 +3998,7 @@ void tcp_reset(struct sock *sk) /* This barrier is coupled with smp_rmb() in tcp_poll() */ smp_wmb(); + tcp_write_queue_purge(sk); tcp_done(sk); if (!sock_flag(sk, SOCK_DEAD))