mptcp: pm: send ACK on an active subflow

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

 



From: Matthieu Baerts (NGI0) <matttbe@xxxxxxxxxx>

commit c07cc3ed895f9bfe0c53b5ed6be710c133b4271c upstream.

Taking the first one on the list doesn't work in some cases, e.g. if the
initial subflow is being removed. Pick another one instead of not
sending anything.

Fixes: 84dfe3677a6f ("mptcp: send out dedicated ADD_ADDR packet")
Cc: stable@xxxxxxxxxxxxxxx
Reviewed-by: Mat Martineau <martineau@xxxxxxxxxx>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@xxxxxxxxxx>
Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 net/mptcp/pm_netlink.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -768,9 +768,12 @@ void mptcp_pm_nl_addr_send_ack(struct mp
 	    !mptcp_pm_should_rm_signal(msk))
 		return;
 
-	subflow = list_first_entry_or_null(&msk->conn_list, typeof(*subflow), node);
-	if (subflow)
-		mptcp_pm_send_ack(msk, subflow, false, false);
+	mptcp_for_each_subflow(msk, subflow) {
+		if (__mptcp_subflow_active(subflow)) {
+			mptcp_pm_send_ack(msk, subflow, false, false);
+			break;
+		}
+	}
 }
 
 int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,


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

queue-6.10/selftests-mptcp-join-cannot-rm-sf-if-closed.patch
queue-6.10/mptcp-pm-fix-rm_addr-id-for-the-initial-subflow.patch
queue-6.10/mptcp-pm-fix-id-0-endp-usage-after-multiple-re-creations.patch
queue-6.10/mptcp-pm-skip-connecting-to-already-established-sf.patch
queue-6.10/mptcp-pm-reuse-id-0-after-delete-and-re-add.patch
queue-6.10/mptcp-avoid-duplicated-sub_closed-events.patch
queue-6.10/mptcp-pm-add_addr-0-is-not-a-new-address.patch
queue-6.10/mptcp-pm-do-not-remove-already-closed-subflows.patch
queue-6.10/mptcp-pm-send-ack-on-an-active-subflow.patch
queue-6.10/mptcp-pm-reset-mpc-endp-id-when-re-added.patch
queue-6.10/mptcp-close-subflow-when-receiving-tcp-fin.patch
queue-6.10/selftests-mptcp-join-check-re-re-adding-id-0-endp.patch
queue-6.10/selftests-mptcp-join-no-extra-msg-if-no-counter.patch
queue-6.10/mptcp-pr_debug-add-missing-n-at-the-end.patch
queue-6.10/selftests-mptcp-join-check-removing-id-0-endpoint.patch
queue-6.10/mptcp-sched-check-both-backup-in-retrans.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