From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
David Beckett <david.beckett@netronome.com>,
Jakub Kicinski <jakub.kicinski@netronome.com>,
Dirk van der Merwe <dirk.vandermerwe@netronome.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 5.1 32/40] net/tls: fix no wakeup on partial reads
Date: Mon, 3 Jun 2019 11:09:25 +0200 [thread overview]
Message-ID: <20190603090524.509763583@linuxfoundation.org> (raw)
In-Reply-To: <20190603090522.617635820@linuxfoundation.org>
From: Jakub Kicinski <jakub.kicinski@netronome.com>
[ Upstream commit 04b25a5411f966c2e586909a8496553b71876fae ]
When tls_sw_recvmsg() partially copies a record it pops that
record from ctx->recv_pkt and places it on rx_list.
Next iteration of tls_sw_recvmsg() reads from rx_list via
process_rx_list() before it enters the decryption loop.
If there is no more records to be read tls_wait_data()
will put the process on the wait queue and got to sleep.
This is incorrect, because some data was already copied
in process_rx_list().
In case of RPC connections process may never get woken up,
because peer also simply blocks in read().
I think this may also fix a similar issue when BPF is at
play, because after __tcp_bpf_recvmsg() returns some data
we subtract it from len and use continue to restart the
loop, but len could have just reached 0, so again we'd
sleep unnecessarily. That's added by:
commit d3b18ad31f93 ("tls: add bpf support to sk_msg handling")
Fixes: 692d7b5d1f91 ("tls: Fix recvmsg() to be able to peek across multiple records")
Reported-by: David Beckett <david.beckett@netronome.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Tested-by: David Beckett <david.beckett@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/tls/tls_sw.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -1692,7 +1692,7 @@ int tls_sw_recvmsg(struct sock *sk,
len = len - copied;
timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
- do {
+ while (len && (decrypted + copied < target || ctx->recv_pkt)) {
bool retain_skb = false;
bool zc = false;
int to_decrypt;
@@ -1823,11 +1823,7 @@ pick_next_record:
} else {
break;
}
-
- /* If we have a new message from strparser, continue now. */
- if (decrypted + copied >= target && !ctx->recv_pkt)
- break;
- } while (len);
+ }
recv_end:
if (num_async) {
next prev parent reply other threads:[~2019-06-03 9:14 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 9:08 [PATCH 5.1 00/40] 5.1.7-stable review Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 01/40] bonding/802.3ad: fix slave link initialization transition states Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 02/40] cxgb4: offload VLAN flows regardless of VLAN ethtype Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 03/40] ethtool: Check for vlan etype or vlan tci when parsing flow_rule Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 04/40] inet: switch IP ID generator to siphash Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 05/40] ipv4/igmp: fix another memory leak in igmpv3_del_delrec() Greg Kroah-Hartman
2019-06-03 9:08 ` [PATCH 5.1 06/40] ipv4/igmp: fix build error if !CONFIG_IP_MULTICAST Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 07/40] ipv6: Consider sk_bound_dev_if when binding a raw socket to an address Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 08/40] ipv6: Fix redirect with VRF Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 09/40] llc: fix skb leak in llc_build_and_send_ui_pkt() Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 10/40] mlxsw: spectrum_acl: Avoid warning after identical rules insertion Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 11/40] net: dsa: mv88e6xxx: fix handling of upper half of STATS_TYPE_PORT Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 12/40] net: fec: fix the clk mismatch in failed_reset path Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 13/40] net-gro: fix use-after-free read in napi_gro_frags() Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 14/40] net: mvneta: Fix err code path of probe Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 15/40] net: mvpp2: fix bad MVPP2_TXQ_SCHED_TOKEN_CNTR_REG queue value Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 16/40] net: phy: marvell10g: report if the PHY fails to boot firmware Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 17/40] net: sched: dont use tc_action->order during action dump Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 18/40] net: stmmac: fix reset gpio free missing Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 19/40] r8169: fix MAC address being lost in PCI D3 Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 20/40] usbnet: fix kernel crash after disconnect Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 21/40] net/mlx5: Avoid double free in fs init error unwinding path Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 22/40] tipc: Avoid copying bytes beyond the supplied data Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 23/40] net/mlx5: Allocate root ns memory using kzalloc to match kfree Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 24/40] net/mlx5e: Disable rxhash when CQE compress is enabled Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 26/40] net: stmmac: dma channel control register need to be init first Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 27/40] bnxt_en: Fix aggregation buffer leak under OOM condition Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 28/40] bnxt_en: Fix possible BUG() condition when calling pci_disable_msix() Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 29/40] bnxt_en: Reduce memory usage when running in kdump kernel Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 30/40] net/tls: fix lowat calculation if some data came from previous record Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 31/40] selftests/tls: test for lowat overshoot with multiple records Greg Kroah-Hartman
2019-06-03 9:09 ` Greg Kroah-Hartman [this message]
2019-06-03 9:09 ` [PATCH 5.1 33/40] selftests/tls: add test for sleeping even though there is data Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 34/40] net/tls: fix state removal with feature flags off Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 35/40] net/tls: dont ignore netdev notifications if no TLS features Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 36/40] cxgb4: Revert "cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on page size" Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 37/40] net: correct zerocopy refcnt with udp MSG_MORE Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 38/40] crypto: vmx - ghash: do nosimd fallback manually Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 39/40] Revert "tipc: fix modprobe tipc failed after switch order of device registration" Greg Kroah-Hartman
2019-06-03 9:09 ` [PATCH 5.1 40/40] tipc: fix modprobe tipc failed after switch order of device registration Greg Kroah-Hartman
2019-06-03 14:49 ` [PATCH 5.1 00/40] 5.1.7-stable review kernelci.org bot
2019-06-03 18:28 ` Kevin Hilman
2019-06-04 5:49 ` Greg Kroah-Hartman
2019-06-03 17:17 ` Guenter Roeck
2019-06-04 5:51 ` Greg Kroah-Hartman
2019-06-03 18:34 ` Jon Hunter
2019-06-03 18:34 ` Jon Hunter
2019-06-04 5:50 ` Greg Kroah-Hartman
2019-06-03 19:33 ` Naresh Kamboju
2019-06-04 5:51 ` Greg Kroah-Hartman
2019-06-03 23:31 ` shuah
2019-06-04 5:50 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190603090524.509763583@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=david.beckett@netronome.com \
--cc=dirk.vandermerwe@netronome.com \
--cc=jakub.kicinski@netronome.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.