summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2026-06-16 12:30:39 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-07-04 13:39:40 +0200
commit0cdf98ad68f5abb66a3d37d4737de4c845196620 (patch)
treea5c93781a5d113cb9ca888d1017910fc9c68acf8
parent76b94cbd32aacf36a641956385a852635c6802b9 (diff)
downloadlinux-stable-0cdf98ad68f5abb66a3d37d4737de4c845196620.tar.gz
linux-stable-0cdf98ad68f5abb66a3d37d4737de4c845196620.zip
mptcp: fix missing wakeups in edge scenarios
[ Upstream commit 9d8d28738f24b75616d6ca7a27cb4aed88520343 ] The mptcp_recvmsg() can fill MPTCP socket receive queue via mptcp_move_skbs(), but currently does not try to wakeup any listener, because the same process is going to check the receive queue soon. When multiple threads are reading from the same fd, the above can cause stall. Add the missing wakeup. Fixes: 6771bfd9ee24 ("mptcp: update mptcp ack sequence from work queue") Cc: stable@vger.kernel.org Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20260602-net-mptcp-misc-fixes-7-1-rc7-v2-1-856831229976@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/mptcp/protocol.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index fe22e4f57093..26d32af7a43f 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2119,8 +2119,10 @@ static bool __mptcp_move_skbs(struct mptcp_sock *msk)
__mptcp_splice_receive_queue(sk);
mptcp_data_unlock(sk);
}
- if (ret)
+ if (ret) {
mptcp_check_data_fin((struct sock *)msk);
+ sk->sk_data_ready(sk);
+ }
return !skb_queue_empty(&msk->receive_queue);
}