From nobody Thu Sep 18 08:14:49 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:35eb:0:0:0:0:0 with SMTP id w11csp2725033uau; Tue, 28 Jun 2022 12:04:19 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s4c5gq4F/30hlNa/2ejTA858TfnFwevCfOI0M/4LmCoPUbaYFTyIRGTnnWEo2PuDftNyvH X-Received: by 2002:a17:90b:1b49:b0:1ec:a756:edc with SMTP id nv9-20020a17090b1b4900b001eca7560edcmr1195915pjb.200.1656443059421; Tue, 28 Jun 2022 12:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656443059; cv=none; d=google.com; s=arc-20160816; b=SueXBFjhvbkIssAGMNBQntuiJRHmlK9S0RQsAJvVBaLuns4xx83y++duIXUAZ59Cwf Gbxu6qhQnP599lik5lbM8pvYoZSUPSGajS3indIajn9sA8aPb2bxNabaWL0p7+9vQxc/ l4/Xfz4C5LOUdEYvJvO7CODCS3aQuF+H7D8+1yGGnNeFU0Yxnz3s5vSg8vM1rutDulv+ QRXS5C1xe+Qr9UJw+IuJRJ0Ovt2JUvCXG4ohHmQBKq4f03/Zhzg4so+xKnBdeB/Zafh6 2JTDPsI/nEVS20LcyjMcvWexokYHvVWJC7x0QV5QIXqTb+W+HxoMG1SVtTRkeXmYweZJ i9Ug== 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=wYzBd27OF58hpaFflbEpgNuA2hI5wyKsPD74jeTzi5A=; b=EB0275h9An/1Tsm0YVNBT6VMIK/9IkVY5Py6ZamV1IfQuCJPXhCNtq8o3D/cbwSbvm vU1pyyB9Mf+p2bGLUc8UjK/Y8aXZmRFxKC6/Lf0gQzXnm7uUG9x7zb+jtVLFgCpd7dwY zPTq9aJa7ZgI8Zlmtgskz4t/TcyVO75tWPf8LvoZ4oRiw8qjzSFLsjEtWW+y5Fm/MiD2 bWZN8DF0fbEM5MesqiqPD1ZuyNv/aUlgmPGOMpJPneF3QHBOtmpeV5qCI1yxCj0FbsZL ShwIfv0MeBOEo5WiUlx7dMl7NR00ULhfJ+BM+NR9+WufMSuuE57ZJadLJwGQTXDbYG2Y HV1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BfBUq1nz; spf=pass (google.com: domain of mptcp+bounces-5863-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5863-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 a12-20020a170902eccc00b0016a0f6b053fsi21945063plh.450.2022.06.28.12.04.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jun 2022 12:04:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5863-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=BfBUq1nz; spf=pass (google.com: domain of mptcp+bounces-5863-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5863-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 95B6F280C43 for ; Tue, 28 Jun 2022 19:04:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 58B5246BB; Tue, 28 Jun 2022 19:04:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) (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 C91F57A for ; Tue, 28 Jun 2022 19:04:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656443053; x=1687979053; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9oafj8IEchmde+4lypiQotwbsnPAYCakx9LD9twZoQs=; b=BfBUq1nzsPMO8/d92Leqdd+Zs23k+WNZyDPnjz1GPembMeaX6ce/ucWc oA1CdDpxMN5wYKuFbJ9ULa9pnZqzE7HcPeRN1aaInkX/X3Pv3hzsO5nng lLp/TDe4oMLMRAhKn6GEUAYKAVqU7++XsOoSP1mdjGX5rSEZUsdOdF4Z7 2l9sG3b8P/7eLJLwpzT3mQQmEu8jnruHjLQ8RrDLZakgq6ewYVq+PF7AI TuO8xBUoZJ+rwoT+Pm4+jqFBB0f3BIn+XrSO8rr0iFK+XO6wNLH+eSBGr rDsYFOY2LrVg3yCSL+ODG0AyWGLd8lSre254ZAGisKJuRAIh7xJtu1edv g==; X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="343514649" X-IronPort-AV: E=Sophos;i="5.92,229,1650956400"; d="scan'208";a="343514649" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2022 12:04:01 -0700 X-IronPort-AV: E=Sophos;i="5.92,229,1650956400"; d="scan'208";a="917294954" Received: from gwbruss-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.112.228]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2022 12:04:01 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-net 3/3] mptcp: Acquire the subflow socket lock before modifying MP_PRIO flags Date: Tue, 28 Jun 2022 12:03:56 -0700 Message-Id: <20220628190356.326233-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220628190356.326233-1-mathew.j.martineau@linux.intel.com> References: <20220628190356.326233-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" When setting up a subflow's flags for sending MP_PRIO MPTCP options, the subflow socket lock was not held while reading and modifying several struct members that are also read and modified in mptcp_write_options(). Acquire the subflow socket lock earlier and send the MP_PRIO ACK with that lock already acquired. Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d04b34fc9a8e..05c6a95e9c28 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -729,11 +729,13 @@ static int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_= sock *msk, struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct sock *sk =3D (struct sock *)msk; struct mptcp_addr_info local; + bool slow; =20 local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) continue; =20 + slow =3D lock_sock_fast(ssk); if (subflow->backup !=3D bkup) msk->last_snd =3D NULL; subflow->backup =3D bkup; @@ -742,7 +744,8 @@ static int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_so= ck *msk, __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPPRIOTX); =20 pr_debug("send ack for mp_prio"); - mptcp_subflow_send_ack(ssk); + __mptcp_subflow_send_ack(ssk); + unlock_sock_fast(ssk, slow); =20 return 0; } --=20 2.37.0