Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3602868pxb; Mon, 24 Jan 2022 13:16:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJxOG8fAGeQ5ihhiQ9/yULwiCU+wodsi29zJtAMqaW5P+uWLNEgU+9F82mzlDM5rkOpsrTqh X-Received: by 2002:a17:90b:4d11:: with SMTP id mw17mr244927pjb.34.1643059009526; Mon, 24 Jan 2022 13:16:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643059009; cv=none; d=google.com; s=arc-20160816; b=LfmsB4NWpeiV0R7rc03RscO5c3GRPQjp6GQ1vxFqTo9v8hsNhZLY6GjDkfHhHiL7g3 CaPWrhj07GJjIvRnp3Z8fkSWya2kOhcPHpyEeQKRAoqvqVSBe8zOBuaxvlxh0ET16LW/ z0Ib79iNHTX2eUnWnqjP/bWe1kfC81v4cnjE6T0SpGGCdNZ2fo0cibMhXKP5G3vVs272 f4FUCVK9gf1MfeJ0w99FMmhG0IrTXdXOmpXrBzYwVdnX8IzDgvDkhHrTtZbvVDTt8/Gr OX/BPBIvG67zlDTboIb511Q2LjSxjaw6MU5moNu27keBE0gUQMd+uV38aj55mF3nb5lZ TqTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=w59npufFa8n0p8g7NX2WKUguPMFBo9j7kHby9HCt3RY=; b=GGyhvX5Nx+408t8t7hslSJyhHQmfXx3ah+diLG7eMu1LPSswLKDbtLiijRLgYxNvwU S816ZIkSb6xgrWmjnPxOTs8wqXIy2C9OczXIAEu/2kkJlfmex2C6Sq1p+zpoZXX9N/3Q GWOFIvClfRqNZYgJl1/3URZAgnkpZgwSHz3+BnX8i4ZAFEZn7kiL0RlSQZOs2Qz9cbbX MjxkM9otsQ6LCn+kf3npn+jFiMXJUjfThN6bOl09XKvw9K3YKDOqwUsNvrSOFAn4I7A7 TpxjgH7or17+F7okm6FxfuXsAvQ801PG30aRbN+/Nw/u54soc5L8wKsc1D5xUU/zyDBJ ndgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=izsWbj7K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x7si13272190plo.449.2022.01.24.13.16.37; Mon, 24 Jan 2022 13:16:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=izsWbj7K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1392533AbiAXUv0 (ORCPT + 99 others); Mon, 24 Jan 2022 15:51:26 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:33514 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383483AbiAXU1R (ORCPT ); Mon, 24 Jan 2022 15:27:17 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id E49C7B8121A; Mon, 24 Jan 2022 20:27:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 182E3C340E5; Mon, 24 Jan 2022 20:27:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643056034; bh=uRj4HgEAsCnAHzPKf43ZhHj4VQSsgEveE66djYWwcfI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=izsWbj7KTg1TndUvI9gm+v6aH9pSHDslb/iQsYvJsiwA10frIXR39B7Z34WI2J75K YB/Tbtu8wRM3cbpGmAzdHwum6koJivRJHl0kEfTJ+/BO68DGWNXjxEx7ItAZIRevn5 C5UqJq0thSMxH9yfW0NztyJ8dU8NW0KI2IwvjeTo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Paolo Abeni , Mat Martineau , "David S. Miller" , Sasha Levin Subject: [PATCH 5.15 348/846] mptcp: fix per socket endpoint accounting Date: Mon, 24 Jan 2022 19:37:45 +0100 Message-Id: <20220124184112.957838912@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184100.867127425@linuxfoundation.org> References: <20220124184100.867127425@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Paolo Abeni [ Upstream commit f7d6a237d7422809d458d754016de2844017cb4d ] Since full-mesh endpoint support, the reception of a single ADD_ADDR option can cause multiple subflows creation. When such option is accepted we increment 'add_addr_accepted' by one. When we received a paired RM_ADDR option, we deleted all the relevant subflows, decrementing 'add_addr_accepted' by one for each of them. We have a similar issue for 'local_addr_used' Fix them moving the pm endpoint accounting outside the subflow traversal. Fixes: 1a0d6136c5f0 ("mptcp: local addresses fullmesh") Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/mptcp/pm_netlink.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index b79251a36dcbc..d96860053816a 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -710,6 +710,8 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp_sock *msk, return; for (i = 0; i < rm_list->nr; i++) { + bool removed = false; + list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { struct sock *ssk = mptcp_subflow_tcp_sock(subflow); int how = RCV_SHUTDOWN | SEND_SHUTDOWN; @@ -729,15 +731,19 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp_sock *msk, mptcp_close_ssk(sk, ssk, subflow); spin_lock_bh(&msk->pm.lock); - if (rm_type == MPTCP_MIB_RMADDR) { - msk->pm.add_addr_accepted--; - WRITE_ONCE(msk->pm.accept_addr, true); - } else if (rm_type == MPTCP_MIB_RMSUBFLOW) { - msk->pm.local_addr_used--; - } + removed = true; msk->pm.subflows--; __MPTCP_INC_STATS(sock_net(sk), rm_type); } + if (!removed) + continue; + + if (rm_type == MPTCP_MIB_RMADDR) { + msk->pm.add_addr_accepted--; + WRITE_ONCE(msk->pm.accept_addr, true); + } else if (rm_type == MPTCP_MIB_RMSUBFLOW) { + msk->pm.local_addr_used--; + } } } -- 2.34.1