From nobody Sat May 4 02:05:37 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp775030pis; Thu, 12 May 2022 17:35:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyt/Vw8a6upMknU/zBU9kIhTlBLmd0rNHFg7sPmIredwPGAhpLrQ3QA38IRleqTHuL+I+Qf X-Received: by 2002:a17:90b:4a8d:b0:1dc:3769:20fc with SMTP id lp13-20020a17090b4a8d00b001dc376920fcmr13301457pjb.114.1652402145935; Thu, 12 May 2022 17:35:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652402145; cv=none; d=google.com; s=arc-20160816; b=OBvn5b5UOoa5lGeUCpv9xHVHe7VKA4EQdvxDaoaSRwGL+PNNHzxOiyicDMjDA72wFm XFdLofBFXXnU10rAw/+ayJ4qJ/bYJTsHh3Hn6eBUeOj1SvKWmXbd2XxywqSldgzfG6G9 FbhAFEgD9Gaad8RvHCUwbNdJj0J34jw0YnVHLPRXK9QOok2Cb1suRlcCM8x1EoUzFvGC +8PKtBEei8ep0kzcPThVAtaiKpnzkPF1X4DtbLgc/hXgIM13zZHCllkk9e3p+Q83Pn5E f3rC9goHBgmzU07ETHNJKaXr6f0y0ROLTBlPEZiV31mC4KojMPrvyf9XrIXCzYK5Rxru 1yVg== 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:message-id:date:subject:cc:to :from:dkim-signature; bh=lXFYqs88iXnwg6+AdqEIMpWrmCH6Ixh2c7EOq6YPlEY=; b=VHESveOtN81H8+6EMG6UX9VKjB7x5ESHxc/VAUJO4y+7a6Kz88gHQMm9a2iXy7Bl2Y PSaMQP1Yy7t9+LlHOFSGZWhi9UFX0yY4gnhLCx4DzQx9I6+dxk8qHaTVFLnzQL5uqEJh ffUH1uwbcDafyIGOUR1isVXgM8nCubk2my3jKO+T/SlNn/P+zIHb6IYr7KgG+LIUlTo7 m9tulh2zTfuIbZJvu6Sp1y3nu68h/Hmc38h2WLS+VmAdsTB/m6yjZi2Pq9wfwLAkGN2v 1O0O/mNBZzgNir/RKpT/1ia/n4Ck+wRMpY8i0Ty51hZvPcsxteBlSqGnXDrMKx4LSLIC zWbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Lyb7HwLU; spf=pass (google.com: domain of mptcp+bounces-5278-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5278-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id n1-20020a635c41000000b003ab5027375bsi1061855pgm.25.2022.05.12.17.35.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 May 2022 17:35:45 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5278-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Lyb7HwLU; spf=pass (google.com: domain of mptcp+bounces-5278-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5278-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 4D72E28099E for ; Fri, 13 May 2022 00:35:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F25BF17EB; Fri, 13 May 2022 00:35:43 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 8049A17E7 for ; Fri, 13 May 2022 00:35:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652402142; x=1683938142; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=z1WZLVRkQfKK8s9jSV8yCvjpYgok2e55HaS29UyWUZQ=; b=Lyb7HwLUtuq/79Tz1O3IeRI7pD4ORA+bGlFTotBW6Bvm5JHlBpUXYii5 NtlxF9iPp8Wg5HKWhsdn+WA4Ob5+IqrDQuV/BGWljPDWRj10Utz8xKqOk m7RqvR1U5eHRO4Ze2V7fKEzGPp9WcYZ9/AJipoesGLMUoC+Of+e6QhouS OqKhW+QSACK/xybbo27UCpyZ1CA4dO9SNKpH/KTonnkVJ1jdwX2h3D0q/ GLuMKV3N8GckYqwy0d4lCn1zsRyv1kVU4tHDLxDQshamoR5dqA4hrDFL9 Ehl1ymavFIKF3yfMAm7aVrXcw7m8/GNsKNBwnTa1sFqVqZIJQOiBEOyOa Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10345"; a="269845025" X-IronPort-AV: E=Sophos;i="5.91,221,1647327600"; d="scan'208";a="269845025" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2022 17:35:30 -0700 X-IronPort-AV: E=Sophos;i="5.91,221,1647327600"; d="scan'208";a="554007923" Received: from cmokhtar-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.36.250]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2022 17:35:26 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , Paolo Abeni Subject: [PATCH mptcp-next v2] mptcp: Do not traverse the subflow connection list without lock Date: Thu, 12 May 2022 17:35:21 -0700 Message-Id: <20220513003521.548193-1-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.1 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. Reported-by: Paolo Abeni Fixes: 49fa1919d6bc ("mptcp: reset subflow when MP_FAIL doesn't respond") Signed-off-by: Mat Martineau Reviewed-by: Paolo Abeni --- v2: Remove flag. --- 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 3c55e7f45aef..d6aef4b13b8a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2182,23 +2182,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); } @@ -2575,8 +2562,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 9933c711b787..9ccbe25dcc3e 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