From nobody Fri May 3 01:37:56 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:9f92:0:0:0:0:0 with SMTP id a18csp1881718jam; Wed, 9 Feb 2022 01:47:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJxFnmHgkKf+XSLxEl+ZGBqwpVKrUxSXhZWhMR/9LuKzIaSGntEeRuNnR+KrkS1sa3AjFkl3 X-Received: by 2002:a63:1a21:: with SMTP id a33mr1240876pga.35.1644400070091; Wed, 09 Feb 2022 01:47:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644400070; cv=none; d=google.com; s=arc-20160816; b=V8Io8BD4jOogLc4cE5TQgnw1amRMdB7xgfjjgVfKQJao9ZCZ3eR5TQj/IA39fAUU28 NSA92o78lWtNdCna44VPgM9zi7iaI8mK15CPwTgmmnvMvZ1ladpxhqbtoqZ7qwHFQYHU lz+w8T+1WVybERrMEXROILvpKE4f9cRIHrbtME0qSfgPTlXQ0I9M7JzK9eZjJA6WPJl8 BWMt+sj0MxkCsGgfFWS631d5vNgDidK7zj1qIRYXveRDIYno/5KyJI6ObCQByuV1vc4z NpuocPGY4NS1amB44H0TRRO6ptD+1PvrOAjzJnWdo2NhKul2KCk91kzpDpE2fl+9kPzc zKMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=VjyLRsATisKMfjqiT3pKbCmM2hXi2rvfQiTVWDRgKJY=; b=WRcJda9usOPl3ZBC3q7P80Zfqbo7ApTXgw+M+YUuAfzZKu4kKR9FFSd+qeTdaKcxyw YU2IP+ks4NyDiVZ+pqfYRNn2yNWmUuDqnrs8i93rY6T9vH+hSf4C15LnfggK3TNTI6hF JvJHbnan2I7cA1nIaelbQmOnwPqfAy6dnI8CmwC/vK9MgRn5HFHj/U1ZN/C2dn8rFGYQ PVyYbpFZVWQuaIpE/O1iJB15LELlvuxCsNOOcZeTaR9dUCBML6ZmnKzRNNvxKOzZma2F lA7xnsiehzwjjN4FN5cwaHDAptA6dPZZz5w+vbh0Rs5wxvIfuIJsSwW/YZZEopeRVwfh j3Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=IW6bwFyR; spf=pass (google.com: domain of mptcp+bounces-3564-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3564-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id p1si5121512pfo.274.2022.02.09.01.47.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Feb 2022 01:47:50 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3564-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=IW6bwFyR; spf=pass (google.com: domain of mptcp+bounces-3564-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3564-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 6D2553E0FDC for ; Wed, 9 Feb 2022 09:47:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 87A4D2CA1; Wed, 9 Feb 2022 09:47:46 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 946F42CA2 for ; Wed, 9 Feb 2022 09:47:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1644400064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VjyLRsATisKMfjqiT3pKbCmM2hXi2rvfQiTVWDRgKJY=; b=IW6bwFyR79ZVJrV5OQSSe6EDctYmCSPRe1qh67g1e0c0qyQXtBCWl8XxoekfE5CJvkf2d9 jsSKRudlBnZ3R9jErFJEals9wtpQKap/tAOIPO/8yhKsCjSae7a3z3uH8JakyPaRh1diWn o4nmBW69FNPYIZvaTD7FX+1KxKkTkZU= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-318-ExglTkV4O4WdB4_AX_3fnQ-1; Wed, 09 Feb 2022 04:47:39 -0500 X-MC-Unique: ExglTkV4O4WdB4_AX_3fnQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8527E192AB6E for ; Wed, 9 Feb 2022 09:47:38 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.181]) by smtp.corp.redhat.com (Postfix) with ESMTP id E8EDCE2C6 for ; Wed, 9 Feb 2022 09:47:37 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net v3 1/4] mptcp: fix race in overlapping signal events Date: Wed, 9 Feb 2022 10:47:30 +0100 Message-Id: In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" After commit a88c9e496937 ("mptcp: do not block subflows creation on errors"), if a signal address races with a failing subflow creation, the subflow creation failure control path can trigger the selection of the next address to be announced while the current announced is still pending. The above will cause the unintended suppression of the ADD_ADDR announce. Fix the issue skipping the to-be-suppressed announce before it will mark an endpoint as already used. The relevant announce will be triggered again when the current one will complete. Fixes: a88c9e496937 ("mptcp: do not block subflows creation on errors") Signed-off-by: Paolo Abeni --- net/mptcp/pm_netlink.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 93800f32fcb6..fb8d4bfcfbd6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -546,6 +546,16 @@ static void mptcp_pm_create_subflow_or_signal_addr(str= uct mptcp_sock *msk) if (msk->pm.add_addr_signaled < add_addr_signal_max) { local =3D select_signal_address(pernet, msk); =20 + /* due to racing events on both ends we can reach here while + * previous add address is still running: if we invoke now + * mptcp_pm_announce_addr(), that will fail and the + * corresponding id will be marked as used. + * Instead let the PM machinery reschedule us when the + * current address announce will be completed. + */ + if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) + return; + if (local) { if (mptcp_pm_alloc_anno_list(msk, local)) { __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); --=20 2.34.1 From nobody Fri May 3 01:37:56 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:9f92:0:0:0:0:0 with SMTP id a18csp1881680jam; Wed, 9 Feb 2022 01:47:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJx3BHWcQ4AfaJPiouCGOSZ1Rhzu4FcPZDaFmjeFtAfk6+0oPUI/JGuu+hh3izjHB6CkT2Jy X-Received: by 2002:a17:902:8f8b:: with SMTP id z11mr1611264plo.45.1644400066547; Wed, 09 Feb 2022 01:47:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644400066; cv=none; d=google.com; s=arc-20160816; b=MKol40dqD9SQik5RRE4La14kfbwPeoFVr5Cn332VvW2eNBp85d5iOsIOIaT9K6qiEn V7xb83lgLDwiBYt8qK65XkZidgFRJYkPCVK8weFXTIpnf7KWmHQ1YhFM7/rTTeYLc4de jamMj70/ipcrM+zLw6RLEIurS+yrOwJhUxBxVGblxoIsatho87purah4gTaaCUYn91tR TAPq1R5pEZc2KRMmliJyR790eX4Ii090iAdqFA3Odea+TMD1qPtr7Aux35K7NAZHw2eK U75IikeSIz/Dn9i3rEGcvloS6+UIOZGyhA+rc5Rjk6E1fWMKCoUO2itC5spBCRDVdJZ+ peVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=ZlWhKHLLxSH3NQU7f7YpSzfHzpv6ql8uwYl1VmPivJ8=; b=Yq2on2MbG8y1oL2q932hT9y0rqm9dBrmfYl2sQXOfkoCmqs344AXL4NI0PULB0gdnd cDrhutlzNWtHrOd1gEjBVJfXvz4G5lNVS4+AdW7jJxFF/w9RJA6wJ4PtOqtmThHoHGLL 7KEI2OLhKbShwLNKVzMjR3YFyh0eO8ZcQ+bjbiX5vhHyMy+nJCnqFUEAn92oWBci00aa mtD3x7tbibSGYbBdbBg/2ZDgquh9U5GK/7XlDief0BDrXs7K2n3IfG5mU01SZcbh+G7M DIzZRHEHaORfvRVYpDzUUiGPPSS5hlwhRYyp0mOnTt0urVkRbwTDDfXsiUm1k5IG6M7S xsVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=eoF1Wnnl; spf=pass (google.com: domain of mptcp+bounces-3561-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3561-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id k1si16861629plk.132.2022.02.09.01.47.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Feb 2022 01:47:46 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3561-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=eoF1Wnnl; spf=pass (google.com: domain of mptcp+bounces-3561-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3561-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id E688E3E0F75 for ; Wed, 9 Feb 2022 09:47:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7E1FA2CA4; Wed, 9 Feb 2022 09:47:44 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AA2D29CA for ; Wed, 9 Feb 2022 09:47:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1644400062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZlWhKHLLxSH3NQU7f7YpSzfHzpv6ql8uwYl1VmPivJ8=; b=eoF1WnnlMZGVhAK2E/nnHMz4SrUnfhz2bMtL0iVFoxcpzekHLy67lLuj1nNQwVsYLfDE02 FX68sOkGcPIT+JfIr4DqTNOn3neZlnWukRpQm1J+eatA3M6x7OCv2KzsqvYM+gTfEGCuk+ AO+6CDRJZn2ohY82+NCDrFytq4vgpUs= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-350-rZ514NSkO3a7bQvRJnj8qQ-1; Wed, 09 Feb 2022 04:47:40 -0500 X-MC-Unique: rZ514NSkO3a7bQvRJnj8qQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 786B48145E0 for ; Wed, 9 Feb 2022 09:47:39 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.181]) by smtp.corp.redhat.com (Postfix) with ESMTP id DEEFD2A17B for ; Wed, 9 Feb 2022 09:47:38 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net v3 2/4] mptcp: fix race in incoming ADD_ADDR option processing. Date: Wed, 9 Feb 2022 10:47:31 +0100 Message-Id: <911eab24cdc573cfce1865556aa1ec8986ea6e60.1644399915.git.pabeni@redhat.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If an MPTCP endpoint received moltiple consecutive incoming ADD_ADDR options, mptcp_pm_add_addr_received() can overwrite the current remote address value after the PM lock is released in mptcp_pm_nl_add_addr_received() and before such address is echoed. Fix the issue caching the remote address value a little earlier and always using the cached value after releasing the PM lock. Fixes: f7efc7771eac ("mptcp: drop argument port from mptcp_pm_announce_addr= ") Signed-off-by: Paolo Abeni --- v2 -> v3: - properly initialize reset_port - Matt --- net/mptcp/pm_netlink.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index fb8d4bfcfbd6..98b485406afa 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -660,6 +660,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) unsigned int add_addr_accept_max; struct mptcp_addr_info remote; unsigned int subflows_max; + bool reset_port =3D false; int i, nr; =20 add_addr_accept_max =3D mptcp_pm_get_add_addr_accept_max(msk); @@ -669,15 +670,19 @@ static void mptcp_pm_nl_add_addr_received(struct mptc= p_sock *msk) msk->pm.add_addr_accepted, add_addr_accept_max, msk->pm.remote.family); =20 - if (lookup_subflow_by_daddr(&msk->conn_list, &msk->pm.remote)) + remote =3D msk->pm.remote; + if (lookup_subflow_by_daddr(&msk->conn_list, &remote)) goto add_addr_echo; =20 + /* pick id 0 port, if none is provided the remote address */ + if (!remote.port) { + reset_port =3D true; + remote.port =3D sk->sk_dport; + } + /* connect to the specified remote address, using whatever * local address the routing configuration will pick. */ - remote =3D msk->pm.remote; - if (!remote.port) - remote.port =3D sk->sk_dport; nr =3D fill_local_addresses_vec(msk, addrs); =20 msk->pm.add_addr_accepted++; @@ -690,8 +695,12 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp= _sock *msk) __mptcp_subflow_connect(sk, &addrs[i], &remote); spin_lock_bh(&msk->pm.lock); =20 + /* be sure to echo exactly the received address */ + if (reset_port) + remote.port =3D 0; + add_addr_echo: - mptcp_pm_announce_addr(msk, &msk->pm.remote, true); + mptcp_pm_announce_addr(msk, &remote, true); mptcp_pm_nl_addr_send_ack(msk); } =20 --=20 2.34.1 From nobody Fri May 3 01:37:56 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:9f92:0:0:0:0:0 with SMTP id a18csp1881694jam; Wed, 9 Feb 2022 01:47:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJzyYKxPTdC/0/61AfePq7QFpabrxwtifD/Mz0XcuBv8LLfOCzHDp7RS5mJ/TJGStsqYdhr4 X-Received: by 2002:a05:620a:25d2:: with SMTP id y18mr603810qko.522.1644400067647; Wed, 09 Feb 2022 01:47:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644400067; cv=none; d=google.com; s=arc-20160816; b=wjgP/RUXBRc1HEO5ZtcPuJDcDslYB12QfCzS8X7wP+zQo8vKssZJeDZbyBjpmIgGcR yGnKsZvFBVlNCEI17W9xJG4ZjbfaGSzGGpCUE8l3gr0XDow/Wy3Gs4RmKXLlNbti1Xqb pWjaSiKWpNUtEPa2mX2aIoxv4ImlAlXwO+1daUSqIcA+cnmx5hZCvw+Ct+slvLsnvB+c MoHn6wMcmQrkNt5rrh4j4s6f0HsdikIoTXz9taU8s5kfrKLCSugG7rkNqEcjHr2rf46V jivkuDdvhVvn3jk3KjKo0Aa6nC3xghhVwSIpOXYmVw4Lmwr1T5qlBXTrpsiQU5qIe7sx YEuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=A3ARgymVTVtsiXYGKLmMNFhJnfkY/4+I36Zn1I2Cj0Q=; b=X1zSTP2ilcMko+HIh7SsQiJVhsU0h2P/AvQ8dwbrSe0oe8dASUz870gPxzI+p9i81Z mYMh1D80G79edL/Zd9Pi74JNdshl7EDmeZWFW1NFtRckylPpnUuxIPAYv75cdTAr5yCc w9k3N6n6Ac0Ew4rva9hIKYMURj1zaS58LyTAY+fQ7reC05UTaSF/vJ5V53AVESgl0I3V rqYUlPGPw68qFSM4/2Bx6CiOzjrfYJatoAfgwUpLFeOscjAQiQD3g7D/1QooE/6VZNb5 HtR7v/9FShFWPUc5GvDWOVz9LvdFFl0McIsdrQD9tF/Y1MEm8+Ucqf94zkwmCGL/YQVc E8ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=I6sXkxYt; spf=pass (google.com: domain of mptcp+bounces-3562-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3562-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id r7si1068007qkp.520.2022.02.09.01.47.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Feb 2022 01:47:47 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3562-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=I6sXkxYt; spf=pass (google.com: domain of mptcp+bounces-3562-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3562-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 5EF651C0C60 for ; Wed, 9 Feb 2022 09:47:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F04152CA5; Wed, 9 Feb 2022 09:47:44 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5ABE62C80 for ; Wed, 9 Feb 2022 09:47:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1644400062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=A3ARgymVTVtsiXYGKLmMNFhJnfkY/4+I36Zn1I2Cj0Q=; b=I6sXkxYtoCPX1j70xcYIHP0be8Rg5Szsho0vA9uLLhJE5Oe2Txm9SiTXmbgsbc+SH92KEw gpFn7rJ5AYTdh7RB6Q4gxSeLX3/ZbImQU6YsB3RUvAO6IFdC9KOCrTUjIjqkQwzKl7akEZ py6ckeMd5zvm9xYv2VyMsE5s97Yrxa0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-520-64TOgNR8MYCJpetBCWP1fw-1; Wed, 09 Feb 2022 04:47:41 -0500 X-MC-Unique: 64TOgNR8MYCJpetBCWP1fw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 65808192AB6D for ; Wed, 9 Feb 2022 09:47:40 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.181]) by smtp.corp.redhat.com (Postfix) with ESMTP id CEBCAE2C6 for ; Wed, 9 Feb 2022 09:47:39 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net v3 3/4] mptcp: add mibs counter for ignored incoming options Date: Wed, 9 Feb 2022 10:47:32 +0100 Message-Id: <3ecca50d02f7d75f9f4dc166f80ebddb3d91bdfa.1644399915.git.pabeni@redhat.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The MPTCP in kernel path manager has some constraints on incoming addresses annunces processing, so that in edge scenarios it can end-up dropping (ignoring) some of such announces. The above is not very limiting in practice since such scenarios are very uncommon and MPTCP will recover due to ADD_ADDR retransmissions. This patch adds a few MIBs counter to account for such drop events to allow easier introspection of the critical scenarios. Signed-off-by: Paolo Abeni --- net/mptcp/mib.c | 2 ++ net/mptcp/mib.h | 2 ++ net/mptcp/pm.c | 8 ++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c index c12251cb0d44..d544b5304596 100644 --- a/net/mptcp/mib.c +++ b/net/mptcp/mib.c @@ -36,12 +36,14 @@ static const struct snmp_mib mptcp_snmp_list[] =3D { SNMP_MIB_ITEM("AddAddr", MPTCP_MIB_ADDADDR), SNMP_MIB_ITEM("EchoAdd", MPTCP_MIB_ECHOADD), SNMP_MIB_ITEM("PortAdd", MPTCP_MIB_PORTADD), + SNMP_MIB_ITEM("AddAddrDropped", MPTCP_MIB_ADDADDRDROP), SNMP_MIB_ITEM("MPJoinPortSynRx", MPTCP_MIB_JOINPORTSYNRX), SNMP_MIB_ITEM("MPJoinPortSynAckRx", MPTCP_MIB_JOINPORTSYNACKRX), SNMP_MIB_ITEM("MPJoinPortAckRx", MPTCP_MIB_JOINPORTACKRX), SNMP_MIB_ITEM("MismatchPortSynRx", MPTCP_MIB_MISMATCHPORTSYNRX), SNMP_MIB_ITEM("MismatchPortAckRx", MPTCP_MIB_MISMATCHPORTACKRX), SNMP_MIB_ITEM("RmAddr", MPTCP_MIB_RMADDR), + SNMP_MIB_ITEM("RmAddrDrop", MPTCP_MIB_RMADDRDROP), SNMP_MIB_ITEM("RmSubflow", MPTCP_MIB_RMSUBFLOW), SNMP_MIB_ITEM("MPPrioTx", MPTCP_MIB_MPPRIOTX), SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX), diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h index 7901f1338d15..785cf751e5c0 100644 --- a/net/mptcp/mib.h +++ b/net/mptcp/mib.h @@ -29,12 +29,14 @@ enum linux_mptcp_mib_field { MPTCP_MIB_ADDADDR, /* Received ADD_ADDR with echo-flag=3D0 */ MPTCP_MIB_ECHOADD, /* Received ADD_ADDR with echo-flag=3D1 */ MPTCP_MIB_PORTADD, /* Received ADD_ADDR with a port-number */ + MPTCP_MIB_ADDADDRDROP, /* Dropped incoming ADD_ADDR */ MPTCP_MIB_JOINPORTSYNRX, /* Received a SYN MP_JOIN with a different port-= number */ MPTCP_MIB_JOINPORTSYNACKRX, /* Received a SYNACK MP_JOIN with a different= port-number */ MPTCP_MIB_JOINPORTACKRX, /* Received an ACK MP_JOIN with a different port= -number */ MPTCP_MIB_MISMATCHPORTSYNRX, /* Received a SYN MP_JOIN with a mismatched = port-number */ MPTCP_MIB_MISMATCHPORTACKRX, /* Received an ACK MP_JOIN with a mismatched= port-number */ MPTCP_MIB_RMADDR, /* Received RM_ADDR */ + MPTCP_MIB_RMADDRDROP, /* Dropped incoming RM_ADDR */ MPTCP_MIB_RMSUBFLOW, /* Remove a subflow */ MPTCP_MIB_MPPRIOTX, /* Transmit a MP_PRIO */ MPTCP_MIB_MPPRIORX, /* Received a MP_PRIO */ diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 1f8878cc29e3..c28dd5c21cbe 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -213,6 +213,8 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, mptcp_pm_add_addr_send_ack(msk); } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { pm->remote =3D *addr; + } else { + __MPTCP_INC_STATS(sock_net((struct sock*)msk), MPTCP_MIB_ADDADDRDROP); } =20 spin_unlock_bh(&pm->lock); @@ -253,8 +255,10 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, mptcp_event_addr_removed(msk, rm_list->ids[i]); =20 spin_lock_bh(&pm->lock); - mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED); - pm->rm_list_rx =3D *rm_list; + if (mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED)) + pm->rm_list_rx =3D *rm_list; + else + __MPTCP_INC_STATS(sock_net((struct sock*)msk), MPTCP_MIB_RMADDRDROP); spin_unlock_bh(&pm->lock); } =20 --=20 2.34.1 From nobody Fri May 3 01:37:56 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:9f92:0:0:0:0:0 with SMTP id a18csp1881706jam; Wed, 9 Feb 2022 01:47:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJymiFIFfRaM5hjahtl3uub30ZblYlWuxhtezNtCBXFf0Co0Labc0hl+2jNgQzV3BMnEsBMe X-Received: by 2002:a37:30e:: with SMTP id 14mr568066qkd.571.1644400068899; Wed, 09 Feb 2022 01:47:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644400068; cv=none; d=google.com; s=arc-20160816; b=goh/Id1vQ7n/R/qXwxskpVXXfnpdrytSYWF6a+WbXSJPHoiw+a3GWdbxe+Mhejz882 ZW2NBTSXssp6SiMg46+FVXNRzN+gPA7Qok3OgunOqGkMYJT8F2SevCdgbCV2QbgiQrF7 ZvWLuGUu7AXCxkqsV7gzZgBnIAF34EJ4/dt/g4lIuCfvHbPdXzKMb3BhJriHnFj+CbXI tFMaNEmLg+QCeSMxOxAK7/2ED9i9LUONEMAvOHudAWwJqYDBHnUJwW8UGe2h/J1rFGYG Dv8bAn+8YR0b1aA1fpeix9b6lj1OXTw1YtGVp/VAXeO6OhFDiAG2prf9TGLBo6ifOFYf ov8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=rH5USFWdLZjhEFfoKpz9D+T6Eoe4ntVi1Mzlbs2xw60=; b=jXe6/p69WpzKArQyYIitMxmsDBOu2TogJHdSnUOJNLgPDn2Qty1mUQczxyE8cqYEHY EWSg9IdprVOBcowoRIaTvA6u1kvZ6KH7emv9Ecw89oeKdV+asD55fCbkcQ0EyJxLEPA1 sP7bYNihcwIijjn4er/pOsoPec6rBaWi2XFlu9qPSHqzxEjXG2GIsj2qVZoI30bO/aee D6PJlMdgYdLyAPy2epQ/zQzhu6t5tJDgufEHxiWy9uEcjPl5q2ohopd+i6DFWp8xNTph CFANKIwatLv+NZU5vKbt/OsdRhTRZGEveJOMu7RmDs6ZDdp57Grf8d9Z0z+by0mnAKoq c7QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QVLwz+A7; spf=pass (google.com: domain of mptcp+bounces-3563-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3563-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id x16si3629250qko.559.2022.02.09.01.47.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Feb 2022 01:47:48 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3563-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QVLwz+A7; spf=pass (google.com: domain of mptcp+bounces-3563-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3563-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 9D74F1C0A44 for ; Wed, 9 Feb 2022 09:47:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5E3C22C80; Wed, 9 Feb 2022 09:47:45 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 495B02CA2 for ; Wed, 9 Feb 2022 09:47:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1644400063; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rH5USFWdLZjhEFfoKpz9D+T6Eoe4ntVi1Mzlbs2xw60=; b=QVLwz+A7m2DkOMCt01AFfj1ZFZglS1y/5ZOiv3ZHiVgkKXn1PvJE6NYHke3Lxrr9cfr/OU UjqENASCP68WlKpczvCsr3U7ZyFDH4VUkjdllcxnAhZZtkudYGW8jIqcE3pHJ4HVYuMdFy 0xsCmJgmvDEVOMjuflmkIPuzqEeO5eM= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-524-YoovWK5QMxedmYoohEZrDQ-1; Wed, 09 Feb 2022 04:47:42 -0500 X-MC-Unique: YoovWK5QMxedmYoohEZrDQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 565DF5AB7 for ; Wed, 9 Feb 2022 09:47:41 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.181]) by smtp.corp.redhat.com (Postfix) with ESMTP id BCB5428546 for ; Wed, 9 Feb 2022 09:47:40 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net v3 4/4] selftests: mptcp: more robust signal race test Date: Wed, 9 Feb 2022 10:47:33 +0100 Message-Id: In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The in kernel MPTCP PM implementation can process a single incoming add address option at any given time. In the mentioned test the server can surpas such limit. Let the setup cope with that allowing a faster add_addr retransmission. Signed-off-by: Paolo Abeni --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 90a6adc36490..66ac990415e6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -915,11 +915,17 @@ chk_add_nr() local mis_ack_nr=3D${8:-0} local count local dump_stats + local timeout + + timeout=3D`ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout` =20 printf "%-${nr_blank}s %s" " " "add" - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtAddAddr | awk '{prin= t $2}'` + count=3D`ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddA= ddr | awk '{print $2}'` [ -z "$count" ] && count=3D0 - if [ "$count" !=3D "$add_nr" ]; then + + # if the test configured a short timeout tolerate greater then expected + # add addrs options, due to retransmissions + if [ "$count" !=3D "$add_nr" ] && [ "$timeout" -gt 1 -o "$count" -lt "$ad= d_nr" ]; then echo "[fail] got $count ADD_ADDR[s] expected $add_nr" ret=3D1 dump_stats=3D1 @@ -1311,6 +1317,7 @@ signal_address_tests() =20 # signal addresses race test reset + pm_nl_set_limits $ns1 4 4 pm_nl_set_limits $ns2 4 4 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal @@ -1321,7 +1328,10 @@ signal_address_tests() pm_nl_add_endpoint $ns2 10.0.2.2 flags signal pm_nl_add_endpoint $ns2 10.0.3.2 flags signal pm_nl_add_endpoint $ns2 10.0.4.2 flags signal - run_tests $ns1 $ns2 10.0.1.1 + + # the peer could possibly miss some addr notification, allow retransmissi= on + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow chk_join_nr "signal addresses race test" 3 3 3 =20 # the server will not signal the address terminating --=20 2.34.1