]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mptcp: fix missing wakeups in edge scenarios
authorPaolo Abeni <pabeni@redhat.com>
Tue, 2 Jun 2026 12:14:08 +0000 (22:14 +1000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Jun 2026 02:04:25 +0000 (19:04 -0700)
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>
net/mptcp/protocol.c

index a72a6ad6ee8b1da8c331640808c15fd66a777d39..5a20ab2789aebb5fd9ac1262e7647815a730890d 100644 (file)
@@ -2276,6 +2276,10 @@ static bool mptcp_move_skbs(struct sock *sk)
                mptcp_backlog_spooled(sk, moved, &skbs);
        }
        mptcp_data_unlock(sk);
+
+       if (enqueued && mptcp_epollin_ready(sk))
+               sk->sk_data_ready(sk);
+
        return enqueued;
 }