From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1E50C76191 for ; Fri, 26 Jul 2019 15:36:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B17EA205F4 for ; Fri, 26 Jul 2019 15:36:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564155417; bh=TjuGjxvbtzlQABlyUt/YBGJ1P0JFtaLDYZ4vtzSJu2o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=XZhGugnu6FLLz8RkKmvnfKf/SzOqk0Vv6MWyZ+qMBqB9HXHF1gt83l7JxYV+or4iY f0aHBd+0RKhg6pES+tljxpsmCp+Z6VbZGcWVwOeMMOMtLXZYrEof65zAKARXIWGNLc 599/saH7Jj/uT1ulC+KRSjmXgw1kYAGY/sJsIfx8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389057AbfGZPaT (ORCPT ); Fri, 26 Jul 2019 11:30:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:45198 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389052AbfGZPaS (ORCPT ); Fri, 26 Jul 2019 11:30:18 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2BFAC22BF5; Fri, 26 Jul 2019 15:30:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564155017; bh=TjuGjxvbtzlQABlyUt/YBGJ1P0JFtaLDYZ4vtzSJu2o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gHHla0nruag58rd8zviaKU0KKYwFYY7aqkBH3NU3HXBpOLrz/rMiIDhf1Mkutr7v1 BBeh9+kw/PDVaudUAbXYV5Jq+Js06CR7DsdBK+9uve9CCroGyED6hKq5ciSeCkfEGV llw4nfO0RRMufiuouFxmJzOHFn5g1VpXXatw+/Pc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, David Beckett , Jakub Kicinski , Dirk van der Merwe , "David S. Miller" Subject: [PATCH 5.1 37/62] net/tls: fix poll ignoring partially copied records Date: Fri, 26 Jul 2019 17:24:49 +0200 Message-Id: <20190726152305.857789553@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190726152301.720139286@linuxfoundation.org> References: <20190726152301.720139286@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Jakub Kicinski [ Upstream commit 13aecb17acabc2a92187d08f7ca93bb8aad62c6f ] David reports that RPC applications which use epoll() occasionally get stuck, and that TLS ULP causes the kernel to not wake applications, even though read() will return data. This is indeed true. The ctx->rx_list which holds partially copied records is not consulted when deciding whether socket is readable. Note that SO_RCVLOWAT with epoll() is and has always been broken for kernel TLS. We'd need to parse all records from the TCP layer, instead of just the first one. Fixes: 692d7b5d1f91 ("tls: Fix recvmsg() to be able to peek across multiple records") Reported-by: David Beckett Signed-off-by: Jakub Kicinski Reviewed-by: Dirk van der Merwe Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/tls/tls_sw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -1931,7 +1931,8 @@ bool tls_sw_stream_read(const struct soc ingress_empty = list_empty(&psock->ingress_msg); rcu_read_unlock(); - return !ingress_empty || ctx->recv_pkt; + return !ingress_empty || ctx->recv_pkt || + !skb_queue_empty(&ctx->rx_list); } static int tls_read_size(struct strparser *strp, struct sk_buff *skb)