From nobody Thu Sep 18 08:15:36 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp549164pis; Wed, 18 May 2022 15:04:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwkhcHJ13uqoBAYQm7uBUhiwB6xAvzSTzIdw0YkyQbQje6FkPBFDKyGziwQIHOA7ocYw6sE X-Received: by 2002:a05:6870:4348:b0:f1:ec31:10e7 with SMTP id x8-20020a056870434800b000f1ec3110e7mr635168oah.156.1652911498226; Wed, 18 May 2022 15:04:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652911498; cv=none; d=google.com; s=arc-20160816; b=AUoYOP9K62HbkSiqldj4hrF7IguvTEOEssE0b1m27lHOBzLimGEf3reQUIX8gjSpHi Rv4eN11T3CAYW7G/JaWvMwIyPbj7WFevb7U2rNjR+PT/als42A8OShXP9znSJOOF8WOk KJwYzERJuGelpRc+VHzG++KOiFIv+snQlTBOM3gHuRjn/Qlz07VXkCfDeGhtUlzpdos9 BYK8j+444HYWuSv4jJZ/bKaKtquj/jsjo6BiTHX+5PoO8o6H6VFML0QigI+oPtY4D9bt FI9JtCJabOvi5X1TTAEXPYzohduEW4d7zXNxvhy6jwFb6OfibCgTBgT3ToAI/eInNR/g Hraw== 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:cc:to:from:dkim-signature; bh=WtEztFjo5BtWAj/O8XHBNno7bGNiZwIik/SBu6Bfwuk=; b=BNHeSyFNweVeXC+ELlLX2O4qVjhxrUvdZplPUdu1PKf7m26Fiv9oF+hOnQXf//fOxH xJyO0H3NFWfnsGRmOlkktsNm0k3P1Zx4eKHMJDlcmCh6U7hxZmnygvT5tJ+sn1fVyNQy PDNLJF4RLIkDOksp3GQILoUJCyuzDgum2yBXoT5Ge2tuCelJ2Ps6z+z1HTeD5IUVMAK9 Z9HzczO5U5OWOCUht8QSq02GDLwfwMZgi/ukvUbvfWprZN7oEQLCp2cXpJ1V5PUAUE6X HMUTtHV7+rFxh69rgBK9Ot9p6eXAfT0iCjO5/W7BKNVtnZzQsP8nUuf6QDcNa/KnduSY r8HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=bxYICvfS; spf=pass (google.com: domain of mptcp+bounces-5376-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5376-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id u3-20020a0568301f4300b006061ff7afd5si3882836oth.123.2022.05.18.15.04.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 May 2022 15:04:58 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5376-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=bxYICvfS; spf=pass (google.com: domain of mptcp+bounces-5376-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5376-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.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 da.mirrors.kernel.org (Postfix) with ESMTPS id 1247B2E09D3 for ; Wed, 18 May 2022 22:04:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6C0E033C1; Wed, 18 May 2022 22:04:55 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (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 5E8F333C5 for ; Wed, 18 May 2022 22:04:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652911494; x=1684447494; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hIRxRCdZVwJzOTRyToBDC8wOrpXFZqS/+AneHQ5JYEA=; b=bxYICvfSszbGSMmULaS73D6cuEXQIG//rubXf47I7oj5bI7amblQFJkx j4Lqw45XUlvLJnX1x0CukZvO3+a5+EnEnPINhIBn8d0NjwPgf0UIRhW0q N/CZSLGcUkcMFNikEih8jDi8B1HWXNxN47MaBpCUSrLjcYgEQGmpt6DN3 0yZtaCigFk2vz6YcoBuBYpqzB3fyimK24Z7H/ofu5aWxkvW7OOu0mLmJD ePh3SPU1nofFxrZFzemIix7q+6Lt8XXw13F47agR5a3wpDHrybTk1e8nQ cpDAT9NYn36tXq85AtiMHR8tG1e/vHIZ+aTgiM4im1St9/fRpkdDfX33Y A==; X-IronPort-AV: E=McAfee;i="6400,9594,10351"; a="271865363" X-IronPort-AV: E=Sophos;i="5.91,235,1647327600"; d="scan'208";a="271865363" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2022 15:04:51 -0700 X-IronPort-AV: E=Sophos;i="5.91,235,1647327600"; d="scan'208";a="598075440" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.36.18]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2022 15:04:51 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 3/4] mptcp: Do not traverse the subflow connection list without lock Date: Wed, 18 May 2022 15:04:45 -0700 Message-Id: <20220518220446.209750-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220518220446.209750-1-mathew.j.martineau@linux.intel.com> References: <20220518220446.209750-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The MPTCP socket's conn_list (list of subflows) requires the socket lock to access. The MP_FAIL timeout code added such an access, where it would check the list of subflows both in timer context and (later) in workqueue context where the socket lock is held. Rather than check the list twice, remove the check in the timeout handler and only depend on the check in the workqueue. Also remove the MPTCP_FAIL_NO_RESPONSE flag, since mptcp_mp_fail_no_response() has insignificant overhead and can be checked on each worker run. Fixes: 49fa1919d6bc ("mptcp: reset subflow when MP_FAIL doesn't respond") Reported-by: Paolo Abeni Reviewed-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/protocol.c | 16 +--------------- net/mptcp/protocol.h | 1 - 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 921d67174e49..17e13396024a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2190,23 +2190,10 @@ mp_fail_response_expect_subflow(struct mptcp_sock *= msk) return ret; } =20 -static void mptcp_check_mp_fail_response(struct mptcp_sock *msk) -{ - struct mptcp_subflow_context *subflow; - struct sock *sk =3D (struct sock *)msk; - - bh_lock_sock(sk); - subflow =3D mp_fail_response_expect_subflow(msk); - if (subflow) - __set_bit(MPTCP_FAIL_NO_RESPONSE, &msk->flags); - bh_unlock_sock(sk); -} - static void mptcp_timeout_timer(struct timer_list *t) { struct sock *sk =3D from_timer(sk, t, sk_timer); =20 - mptcp_check_mp_fail_response(mptcp_sk(sk)); mptcp_schedule_work(sk); sock_put(sk); } @@ -2588,8 +2575,7 @@ static void mptcp_worker(struct work_struct *work) if (test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags)) __mptcp_retrans(sk); =20 - if (test_and_clear_bit(MPTCP_FAIL_NO_RESPONSE, &msk->flags)) - mptcp_mp_fail_no_response(msk); + mptcp_mp_fail_no_response(msk); =20 unlock: release_sock(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 91f7ef6e6c56..5e371b278252 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -117,7 +117,6 @@ #define MPTCP_WORK_EOF 3 #define MPTCP_FALLBACK_DONE 4 #define MPTCP_WORK_CLOSE_SUBFLOW 5 -#define MPTCP_FAIL_NO_RESPONSE 6 =20 /* MPTCP socket release cb flags */ #define MPTCP_PUSH_PENDING 1 --=20 2.36.1