From nobody Mon Feb 9 15:29:55 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398567jap; Wed, 15 Dec 2021 16:33:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwOTNrOyhiZtAkeSwpMDRAPAjWIjD9YtGF8V78qLhhBMedhahJdeMEnp1gXDqs5HTIo56li X-Received: by 2002:a05:622a:f:: with SMTP id x15mr14735448qtw.481.1639614825907; Wed, 15 Dec 2021 16:33:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614825; cv=none; d=google.com; s=arc-20160816; b=a0QUTpNa0HiAq4ym5JqIZdAkk6mks4xXniGlHcOLket59fsLOPaIc1LO/1hLISDrtu crHeP2OPYXc6sUcqv9oPjjFiRZpvNehOnp/T57tkiHK+jsEmz06xJkG5IVUfMgwGNXSO M1TpalcPwSd9U/1fRBLrVO2X37f0Dzdvz9eQiH4xhkqKkqVCAyiqgnacL8tLOIrIj4wk /TcsOTv6j7M1Q6iydbMAfHJ9TwP8wlh7GWmccREx2Oa8dhQIxHBuXg6sjK8CBH3q9Ey6 Tv4u2ZwK11eenffqdGAdTqo/aRiuSXICS79GvnKKKWyIA2lXeOoiFG+qgXo1M2pjDGTF FcUQ== 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; bh=qQGizCjTONWqeMwu2UV0HseknJOcB/V+M13K4JxdEWw=; b=o8uni+Xs2dSPIJCX0O2S2bdZ+kPC2XU/tDlReN89+YF8LVR3zhI3CDTngeIvFLuOLC 077oe5zusFRfEJWtPGVxqYnSBdjfb35oFvOGmtG5rEUlsFVNyZX1qmCBcVv/nyt5RhWd mYZVcNqhrioO0MN7vPZvKBAG0mHf6pu4CYPphBvg4PiPHNcL/eo1syVv0SdNPmd7/6YX PxrHbihsyW657L8HFJUjkYf6V0JUW2fu9kXPQLJK5D3WnEnpVAc6wP60fHNLCNOFwVlO eFkIpKdqavM39PjH3jZzkZVM+NOcBgrTXCnU5hf3bSyJZPH5yNWHTWo5rrkk8zqCb4Mg sVkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 g20si1846939qtk.490.2021.12.15.16.33.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:45 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2778-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; spf=pass (google.com: domain of mptcp+bounces-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (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 ewr.edge.kernel.org (Postfix) with ESMTPS id 61BB51C0B3D for ; Thu, 16 Dec 2021 00:33:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1793F2CAF; Thu, 16 Dec 2021 00:33:44 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 25F632C9E for ; Thu, 16 Dec 2021 00:33:43 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="302742057" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="302742057" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835392" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:29 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 15 Dec 2021 16:33:22 -0800 Message-Id: <20211216003324.403195-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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" Userspace-managed sockets should not have their subflows or advertisements changed by the kernel path manager. v3: Use helper function for PM mode (Paolo Abeni) Signed-off-by: Mat Martineau --- 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 c8977b0c6cb0..f12effa71942 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1173,7 +1173,8 @@ static int mptcp_nl_add_subflow_or_signal_addr(struct= net *net) while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (!READ_ONCE(msk->fully_established)) + if (!READ_ONCE(msk->fully_established) || + mptcp_pm_is_userspace(msk)) goto next; =20 lock_sock(sk); @@ -1299,6 +1300,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, struct sock *sk =3D (struct sock *)msk; bool remove_subflow; =20 + if (mptcp_pm_is_userspace(msk)) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1340,7 +1344,7 @@ static int mptcp_nl_remove_id_zero_address(struct net= *net, struct sock *sk =3D (struct sock *)msk; struct mptcp_addr_info msk_local; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || mptcp_pm_is_userspace(msk)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1449,9 +1453,11 @@ static void mptcp_nl_remove_addrs_list(struct net *n= et, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - lock_sock(sk); - mptcp_pm_remove_addrs_and_subflows(msk, rm_list); - release_sock(sk); + if (!mptcp_pm_is_userspace(msk)) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1713,7 +1719,7 @@ static int mptcp_nl_addr_backup(struct net *net, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || mptcp_pm_is_userspace(msk)) goto next; =20 lock_sock(sk); --=20 2.34.1