diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index e1e19c76e267..9f7f3772c13c 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -873,7 +873,7 @@ static void subflow_data_ready(struct sock *sk)
 	struct mptcp_sock *msk;
 
 	msk = mptcp_sk(parent);
-	if (inet_sk_state_load(sk) == TCP_LISTEN) {
+	if ((1 << inet_sk_state_load(sk)) & (TCPF_LISTEN | TCPF_CLOSE)) {
 		set_bit(MPTCP_DATA_READY, &msk->flags);
 		parent->sk_data_ready(parent);
 		return;
