Skip to content

Commit 0e32ad6

Browse files
committed
mptcp: fix spurious wake-up on under memory pressure
JIRA: https://issues.redhat.com/browse/RHEL-84571 Upstream Status: net.git commit e226d92 commit e226d92 Author: Paolo Abeni <pabeni@redhat.com> Date: Mon Jan 13 16:44:57 2025 +0100 mptcp: fix spurious wake-up on under memory pressure The wake-up condition currently implemented by mptcp_epollin_ready() is wrong, as it could mark the MPTCP socket as readable even when no data are present and the system is under memory pressure. Explicitly check for some data being available in the receive queue. Fixes: 5684ab1 ("mptcp: give rcvlowat some love") 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/20250113-net-mptcp-connect-st-flakes-v1-2-0d986ee7b1b6@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Davide Caratti <dcaratti@redhat.com>
1 parent 173cc8b commit 0e32ad6

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

net/mptcp/protocol.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -739,10 +739,15 @@ static inline u64 mptcp_data_avail(const struct mptcp_sock *msk)
739739

740740
static inline bool mptcp_epollin_ready(const struct sock *sk)
741741
{
742+
u64 data_avail = mptcp_data_avail(mptcp_sk(sk));
743+
744+
if (!data_avail)
745+
return false;
746+
742747
/* mptcp doesn't have to deal with small skbs in the receive queue,
743-
* at it can always coalesce them
748+
* as it can always coalesce them
744749
*/
745-
return (mptcp_data_avail(mptcp_sk(sk)) >= sk->sk_rcvlowat) ||
750+
return (data_avail >= sk->sk_rcvlowat) ||
746751
(mem_cgroup_sockets_enabled && sk->sk_memcg &&
747752
mem_cgroup_under_socket_pressure(sk->sk_memcg)) ||
748753
READ_ONCE(tcp_memory_pressure);

0 commit comments

Comments
 (0)