Commit 05e3ecea authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski
Browse files

mptcp: avoid potential infinite loop in mptcp_recvmsg()



If a packet is ready in receive queue, and application isssues
a recvmsg()/recvfrom()/recvmmsg() request asking for zero bytes,
we hang in mptcp_recvmsg().

Fixes: ea4ca586 ("mptcp: refine MPTCP-level ack scheduling")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Tested-by: default avatarPaolo Abeni <pabeni@redhat.com>
Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Link: https://lore.kernel.org/r/20201202171657.1185108-1-eric.dumazet@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 2ce5a307
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1921,7 +1921,7 @@ static int mptcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
	len = min_t(size_t, len, INT_MAX);
	target = sock_rcvlowat(sk, flags & MSG_WAITALL, len);

	for (;;) {
	while (copied < len) {
		int bytes_read, old_space;

		bytes_read = __mptcp_recvmsg_mskq(msk, msg, len - copied);