Patch "mptcp: do not rely on implicit state check in mptcp_listen()" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mptcp: do not rely on implicit state check in mptcp_listen()

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mptcp-do-not-rely-on-implicit-state-check-in-mptcp_listen.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.


>From 0226436acf2495cde4b93e7400e5a87305c26054 Mon Sep 17 00:00:00 2001
From: Paolo Abeni <pabeni@xxxxxxxxxx>
Date: Tue, 4 Jul 2023 22:44:34 +0200
Subject: mptcp: do not rely on implicit state check in mptcp_listen()

From: Paolo Abeni <pabeni@xxxxxxxxxx>

commit 0226436acf2495cde4b93e7400e5a87305c26054 upstream.

Since the blamed commit, closing the first subflow resets the first
subflow socket state to SS_UNCONNECTED.

The current mptcp listen implementation relies only on such
state to prevent touching not-fully-disconnected sockets.

Incoming mptcp fastclose (or paired endpoint removal) unconditionally
closes the first subflow.

All the above allows an incoming fastclose followed by a listen() call
to successfully race with a blocking recvmsg(), potentially causing the
latter to hit a divide by zero bug in cleanup_rbuf/__tcp_select_window().

Address the issue explicitly checking the msk socket state in
mptcp_listen(). An alternative solution would be moving the first
subflow socket state update into mptcp_disconnect(), but in the long
term the first subflow socket should be removed: better avoid relaying
on it for internal consistency check.

Fixes: b29fcfb54cd7 ("mptcp: full disconnect implementation")
Cc: stable@xxxxxxxxxxxxxxx
Reported-by: Christoph Paasch <cpaasch@xxxxxxxxx>
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/414
Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
Reviewed-by: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx>
Signed-off-by: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 net/mptcp/protocol.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -3697,6 +3697,11 @@ static int mptcp_listen(struct socket *s
 	pr_debug("msk=%p", msk);
 
 	lock_sock(sk);
+
+	err = -EINVAL;
+	if (sock->state != SS_UNCONNECTED || sock->type != SOCK_STREAM)
+		goto unlock;
+
 	ssock = __mptcp_nmpc_socket(msk);
 	if (IS_ERR(ssock)) {
 		err = PTR_ERR(ssock);


Patches currently in stable-queue which might be from pabeni@xxxxxxxxxx are

queue-6.4/mptcp-do-not-rely-on-implicit-state-check-in-mptcp_listen.patch
queue-6.4/net-sched-sch_qfq-reintroduce-lmax-bound-check-for-m.patch
queue-6.4/udp6-add-a-missing-call-into-udp_fail_queue_rcv_skb-.patch
queue-6.4/mptcp-ensure-subflow-is-unhashed-before-cleaning-the-backlog.patch
queue-6.4/net-fec-recycle-pages-for-transmitted-xdp-frames.patch
queue-6.4/selftests-mptcp-connect-fail-if-nft-supposed-to-work.patch
queue-6.4/net-lan743x-don-t-sleep-in-atomic-context.patch
queue-6.4/octeontx2-pf-add-additional-check-for-mcam-rules.patch
queue-6.4/net-fec-remove-last_bdp-from-fec_enet_txq_xmit_frame.patch
queue-6.4/selftests-mptcp-userspace_pm-report-errors-with-remove-tests.patch
queue-6.4/net-sched-sch_qfq-account-for-stab-overhead-in-qfq_e.patch
queue-6.4/net-fec-increase-the-size-of-tx-ring-and-update-tx_w.patch
queue-6.4/selftests-mptcp-userspace_pm-use-correct-server-port.patch
queue-6.4/net-prevent-skb-corruption-on-frag-list-segmentation.patch
queue-6.4/selftests-mptcp-sockopt-return-error-if-wrong-mark.patch
queue-6.4/net-mvneta-fix-txq_map-in-case-of-txq_number-1.patch
queue-6.4/selftests-mptcp-sockopt-use-iptables-legacy-if-available.patch
queue-6.4/net-dsa-removed-unneeded-of_node_put-in-felix_parse_.patch



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux