From: Greg Kroah-Hartman Date: Tue, 16 Jun 2026 04:38:03 +0000 (+0530) Subject: 6.12-stable patches X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fbbb2981f401515c352712d81fddcdee490ebb89;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: mptcp-fix-missing-wakeups-in-edge-scenarios.patch --- diff --git a/queue-6.12/mptcp-fix-missing-wakeups-in-edge-scenarios.patch b/queue-6.12/mptcp-fix-missing-wakeups-in-edge-scenarios.patch new file mode 100644 index 0000000000..a186c88114 --- /dev/null +++ b/queue-6.12/mptcp-fix-missing-wakeups-in-edge-scenarios.patch @@ -0,0 +1,47 @@ +From stable+bounces-263536-greg=kroah.com@vger.kernel.org Tue Jun 16 09:29:26 2026 +From: Sasha Levin +Date: Mon, 15 Jun 2026 23:59:17 -0400 +Subject: mptcp: fix missing wakeups in edge scenarios +To: stable@vger.kernel.org +Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" , Jakub Kicinski , Sasha Levin +Message-ID: <20260616035917.2802898-1-sashal@kernel.org> + +From: Paolo Abeni + +[ 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 +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20260602-net-mptcp-misc-fixes-7-1-rc7-v2-1-856831229976@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/protocol.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/net/mptcp/protocol.c ++++ b/net/mptcp/protocol.c +@@ -2242,7 +2242,11 @@ static bool __mptcp_move_skbs(struct mpt + } + if (ret) + mptcp_check_data_fin((struct sock *)msk); +- return !skb_queue_empty(&msk->receive_queue); ++ ++ ret = !skb_queue_empty(&msk->receive_queue); ++ if (ret && mptcp_epollin_ready(sk)) ++ sk->sk_data_ready(sk); ++ return ret; + } + + static unsigned int mptcp_inq_hint(const struct sock *sk) diff --git a/queue-6.12/series b/queue-6.12/series index 64d8217c09..8528b2164e 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -241,3 +241,4 @@ rdma-umem-fix-kernel-doc-warnings.patch rdma-move-dma-block-iterator-logic-into-dedicated-files.patch rdma-umem-fix-truncation-for-block-sizes-4g.patch mm-hugetlb-avoid-false-positive-lockdep-assertion.patch +mptcp-fix-missing-wakeups-in-edge-scenarios.patch