From nobody Mon Feb 9 12:09:30 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060498jap; Wed, 17 Nov 2021 17:30:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJwvCgXhQ/R8EGlrxr/ccI6OmblpZcEplsitXhKUXdj4PYftMVCRj0LFZ72ukIEnUHYNbQ4r X-Received: by 2002:ab0:719a:: with SMTP id l26mr30403257uao.88.1637199022170; Wed, 17 Nov 2021 17:30:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199022; cv=none; d=google.com; s=arc-20160816; b=yeG3EFDAT/Bq5eMivDDkTY/BI0PfHhW7fRdBWhkCbpM0CK9wPOhmPUoG1sZAHPO/dw jz2m7IWSNpAGMM5IpHSyWgv9TPZt1JNASkKVJki/FbIQvOF9ZDT06B6FenqITJgitFMT i16aO1tPqQTttcbQr3OEczi1KNDQ6TlWsCUTZSDm17hjcqBMWida2BJjRG5GcgV1tjni ZpWAXHJaKMsFh4KtJItSaBfxb74Db0+HDz/0SARqrz7i3eB5UPve5F1RZ3JlRCNJIDHU 0FKDMPGEpLEhOwZdxJpYyjnTLUWsRrI7qeGQeU6H7WN/RqIU1nfVM9YrwInvjio9r0Uy 0CTw== 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=HxjHTe95MGZfb9Asz24J40R7olwXxy79botr5ldP1D4=; b=NJXwfLcqgWLhvVVWM4kvDiT42/b8O8CFMQBjVRIuaAAWb65/1n2SHiC8eXJYG5OX45 8sXFfR6RS4KhW8cVqsVWWvstVcyPnQpK+wLLZfnN4DuI0TnICLeevfzon/izfz6OvfIE ADzCZ8RNRs39xbeVVlwvvTPB6J57hzKTxKQ6UJkjGJBzdPSjb4hK77BRD8KafYj0os9W 7oIQE6fU8eIwkofT3oJScAxoNO0mbZBQ3BiB3JKvi5YVuEhKLBu20yPUq+0D2Q8AhYRY Lbbfxo1tDHHvRxh7Jgtj6tcl81lNmHbiyfvw9NmnMRd4upPpXGKqKgskt0ipQz5o4S7S CVdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2461-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. [147.75.197.195]) by mx.google.com with ESMTPS id i7si3630544uab.17.2021.11.17.17.30.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:22 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2461-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 88C531C0F1A for ; Thu, 18 Nov 2021 01:30:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BD8292C9A; Thu, 18 Nov 2021 01:30:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 CA0BD2C99 for ; Thu, 18 Nov 2021 01:30:16 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577914" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577914" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294749" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 17 Nov 2021 17:30:03 -0800 Message-Id: <20211118013005.263660-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-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. Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index bab78e2f5299..95880cff9764 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1119,7 +1119,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) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 lock_sock(sk); @@ -1257,6 +1258,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 (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1298,7 +1302,8 @@ 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) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1407,9 +1412,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 (READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_KERNEL) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1671,7 +1678,8 @@ 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) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 lock_sock(sk); --=20 2.34.0