From nobody Mon Feb 9 16:51:42 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886043jaq; Wed, 6 Oct 2021 17:00:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaS8NTm1f+1KqnKKYBeoHqdFr/S8dE74bKjQjyWcRjTJsaTM5Vo3tWyVOF/r7R615WH/PY X-Received: by 2002:a62:7bd5:0:b0:44c:72f5:5da4 with SMTP id w204-20020a627bd5000000b0044c72f55da4mr1232921pfc.48.1633564809251; Wed, 06 Oct 2021 17:00:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564809; cv=none; d=google.com; s=arc-20160816; b=LZZYyGSUaYwCEhXRJoxl1FjIlPhDOYdMN8hS0PfGLAAF8Xe0dbd7oexT6OkvbhTyIa 7b4E0J+FvbwpmFzflmrL0yK3gIPLTRCAwG64jQC7OEoi3YGmwJwjGs9yDO7dESL9gNfB s+G5Y7TmSfKiOWbLyqBOSzHIYrMn13s8hYap/P+YON3BkYVnWRQS6LS5e41OJqA1cEbM +z2idFxndLqYR0YbSjORReraPfrEgViSGImGHQQnfUBJzTr7jhp9hmQKxX21yPo+2T6h IvH51fUdCfZwTPiDh0WAuQGnMzTg77KLAYv7mH9S36OqkeOdzoi6KQZl46/zeaXQRpZd wlbQ== 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=f7HcP+L9fD00gCKZl02kOEKhMO2dAaX+oHHedb3XvWg=; b=iZTvHJoMebJS0k0u8U5Q3mgdF4y4yKPC0eaSw1piYEtF+oCsisvguFZwXrn6q557vm rTtWGz9HcttIxRKWkk26uF3jRFvTBTcYkXQZO+t5kadwPmh+rt+6hgKfla1QnlTLNknp WsSi2enhX54McOEmwIZdtHRfUVgVgrnYDGaO9VyE+MjP17HtbVqDlhvp2E600L3z3X6K wg+X3A7gX1Mv6Pn6jRUnD5VjxIg9NOwBAV9ZU3vX0jrrctUKzIvHZjDyvbi7T7/Wb9G3 0V19sreDvmka1BhcnY5UeWYaavpPLmFYwhc9RCS+G2zrDZDRgGBKi4DGpi1g6MxAqfr/ NcSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id 143si15098084pga.139.2021.10.06.17.00.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:09 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2115-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 sjc.edge.kernel.org (Postfix) with ESMTPS id AE3F93E01F4 for ; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B9FE2C97; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 EACDC2C81 for ; Thu, 7 Oct 2021 00:00:06 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439236" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439236" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351282" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 3/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 6 Oct 2021 16:59:50 -0700 Message-Id: <20211006235953.212243-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-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. (Possible squash with earlier commit) Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 30b974801d51..434049836707 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1131,7 +1131,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.userspace)) goto next; =20 lock_sock(sk); @@ -1269,6 +1270,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.userspace)) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1310,7 +1314,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) || READ_ONCE(msk->pm.userspace)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1419,9 +1423,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.userspace)) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1683,7 +1689,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.userspace)) goto next; =20 lock_sock(sk); --=20 2.33.0