From nobody Tue May 6 07:32:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 5CF24F510 for <mptcp@lists.linux.dev>; Mon, 24 Feb 2025 03:37:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368271; cv=none; b=LXOsK7LC4A2ZzXkwWhCqndw3LQpNFvEEe17jhPQEf40g/wxaNHM//UyHsGV1XkTV664l0KlEmihDSKcA+lHRUprSB0hLTshvPKNEir8xuT2d9r9nZW0ZycsBfDG7iH6JTVSLCp8qSdkAs/t7NUs3nShsQsqFFFPcvhBYNP3c808= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368271; c=relaxed/simple; bh=Hsh22vra6lgCNr/CR6pobyolGOO8LbU8T4xyZfbzGbU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SZJ30O3sWGY434g6zpNzBp3iavHfSmzqgKdSn3BWtN5eDq16lM2H1mPR2ZZUEZQciPmO6OU+umnyVlUP4uVd2Xg1wbLJDQUvFjLghl45TLPeuVo6ueTwkhIKh9BhdsHlHI7KoMtscfFHd6BPNl9VaYSKWx/bwcR3vHJYWQs4AsY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EsYPjwqu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EsYPjwqu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F204C4CEE4; Mon, 24 Feb 2025 03:37:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740368270; bh=Hsh22vra6lgCNr/CR6pobyolGOO8LbU8T4xyZfbzGbU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EsYPjwquh6EXyBnOhwXn5HX35kslEFvjCBWQnw88TrdmfZvirTEYEPGgevXeiNFQ9 ZdXKl/gmFP9fSn10eNMA3M3u+YJNeZcobOzF0UOtUOgtU7CsfOyijsZ1LOqIpKhwNP 38ywa4BCcZxDgNl+RaU/lh4ihqqbkV1bzFm6JIb3iIkO9jQ7/d712TlPyeTQ44jgPk BS3w+FvXTwiIampbebCCYSrslFaxSIJu05VS+EdI529hVNdyFXaAc3fmgNlqXg4fGJ GoqUqLg75ueKoZRsF7qrGR2QbShvBaWWOliu7XFcSRefIm5yiL4Qs+Ja4WEgn8HlNo HN2IAtiXBAV6g== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v4 1/5] Revert "bpf: Extend bpf_skc_to_mptcp_sock to MPTCP sock" Date: Mon, 24 Feb 2025 11:37:36 +0800 Message-ID: <e9d69823cd491ceff981f70c5d864862f5128b1b.1740368110.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1740368110.git.tanggeliang@kylinos.cn> References: <cover.1740368110.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> bpf_core_cast() can be used in mptcp_subflow bpf_iter selftests to get the msk, instead of using bpf_skc_to_mptcp_sock(). No need to add this patch anymore, revert it. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- include/net/mptcp.h | 4 ++-- net/core/filter.c | 2 +- net/mptcp/bpf.c | 10 ++-------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index bcddaf0a588a..6586906701aa 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -362,9 +362,9 @@ static inline void mptcpv6_handle_mapped(struct sock *s= k, bool mapped) { } #endif =20 #if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL) -struct mptcp_sock *bpf_mptcp_sock_from_sock(struct sock *sk); +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk); #else -static inline struct mptcp_sock *bpf_mptcp_sock_from_sock(struct sock *sk)= { return NULL; } +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) { return NULL; } #endif =20 #if !IS_ENABLED(CONFIG_MPTCP) diff --git a/net/core/filter.c b/net/core/filter.c index fc094e8d53d3..2ec162dd83c4 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -11843,7 +11843,7 @@ const struct bpf_func_proto bpf_skc_to_unix_sock_pr= oto =3D { BPF_CALL_1(bpf_skc_to_mptcp_sock, struct sock *, sk) { BTF_TYPE_EMIT(struct mptcp_sock); - return (unsigned long)bpf_mptcp_sock_from_sock(sk); + return (unsigned long)bpf_mptcp_sock_from_subflow(sk); } =20 const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto =3D { diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index be222fa5f308..7e9d9c9a04cf 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -195,15 +195,9 @@ static struct bpf_struct_ops bpf_mptcp_sched_ops =3D { }; #endif /* CONFIG_BPF_JIT */ =20 -struct mptcp_sock *bpf_mptcp_sock_from_sock(struct sock *sk) +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { - if (unlikely(!sk || !sk_fullsock(sk))) - return NULL; - - if (sk->sk_protocol =3D=3D IPPROTO_MPTCP) - return mptcp_sk(sk); - - if (sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) + if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) return mptcp_sk(mptcp_subflow_ctx(sk)->conn); =20 return NULL; --=20 2.43.0 From nobody Tue May 6 07:32:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 0ED1BF510 for <mptcp@lists.linux.dev>; Mon, 24 Feb 2025 03:37:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368273; cv=none; b=s7OxmDBBOVn5Mm9kxEx84HG5HsA/oCbbCdyUtsoTr7uwEgh8865gVBxqhqyqrmQAKDuaOO0XbP+MSrAImEniGcDZUUJ/qdJBeMhsd4k4blIEq8gAprDPxScSctly6PZMKEz8DOF6S2RSSk37XMgf8P2Cp0im35hrnp2QNXq4EWA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368273; c=relaxed/simple; bh=Y/nSLpzRC0NZxGyn2KF0Yxwg1I5WdIB6hNFwT4Y3kEw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hudNGvMsD2xkEOKHvozZgFs4tdu1Naq2SSo0FYdVGNd/yoBxbOZMJJPWRiANp9ITpj96qL8IqZ6xGyP2gUBCEkTG2oBVtBxE+MbZcoGMYrUivIBNLJQy83lu1rsRwt6AyKOEW9KHF6ZJAMzy+ommrOMiOLdGg38nH29+XV1QRZg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZM+2pHmh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZM+2pHmh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77D7CC4CEDD; Mon, 24 Feb 2025 03:37:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740368272; bh=Y/nSLpzRC0NZxGyn2KF0Yxwg1I5WdIB6hNFwT4Y3kEw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZM+2pHmhUU14giRuJyduZwEBxPH4TFCc3EtGL5ARDGsDx7vDWVORuBDaYLD37QkFL 3ZqWy4SPL8+5JTDGAfHEf/KRbM9tC1YX39e+SFL4ILtzyR/K63hs2JmaLgxVtS+HDf prtt6w+KTEwF0uN//HBNery3wDpqt7tOmHYxGc8IITY3OZCz6M6523ZVMHewVfwQUm 9JO3YvTaRPJv6UK6NsyqcPrBob/Lyync5ov2V4W7IryrupfSy84dhB64GvVuOVXSMt a34LjqJR4h+mzax7aahFmaimrR40JzZ7rdzSM44Nx94oKSZYxc1KDHPTzFO0ZIzoEM DhNiAd9P+dYUg== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v4 2/5] Revert "bpf: Allow use of skc_to_mptcp_sock in cg_sockopt" Date: Mon, 24 Feb 2025 11:37:37 +0800 Message-ID: <e129edf39b1d209d37560a4bec1eaeb479ef6110.1740368110.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1740368110.git.tanggeliang@kylinos.cn> References: <cover.1740368110.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> bpf_core_cast() can be used in mptcp_subflow bpf_iter selftests to get the msk, instead of using bpf_skc_to_mptcp_sock(). No need to add this patch anymore, revert it. This reverts commit d8d42f5a4542c2dc31e4e00c58508a821c6ab789. --- kernel/bpf/cgroup.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/kernel/bpf/cgroup.c b/kernel/bpf/cgroup.c index 1ca22e4842cf..46e5db65dbc8 100644 --- a/kernel/bpf/cgroup.c +++ b/kernel/bpf/cgroup.c @@ -2358,8 +2358,6 @@ cg_sockopt_func_proto(enum bpf_func_id func_id, const= struct bpf_prog *prog) #ifdef CONFIG_INET case BPF_FUNC_tcp_sock: return &bpf_tcp_sock_proto; - case BPF_FUNC_skc_to_mptcp_sock: - return &bpf_skc_to_mptcp_sock_proto; #endif case BPF_FUNC_perf_event_output: return &bpf_event_output_data_proto; --=20 2.43.0 From nobody Tue May 6 07:32:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 F0755F510 for <mptcp@lists.linux.dev>; Mon, 24 Feb 2025 03:37:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368275; cv=none; b=RjeHPaF+JqjURBWt18pUzcSlr5mkWXR5wrJ9Bl5XFtPxa2gV6j3RpOHdEkZWNGttjS8tEI+8PQFMvN8ZKhqoAxNCCzqgXl7wUFSLaGePw5JuvJeBrFwxwSzTfNWPl7+grJDN7V9NlEGgixhRDhXvhrz8K9k94uhh7chnqXJ7mco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368275; c=relaxed/simple; bh=xwIW6vgWO9B/sjBeVdq8gCPHXMMU0QMfI7NpGr9S3II=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MlPyQlNikzxm7nkuLscPTQsdMOpFWLgaAqoc5kNJfNXGEoxQEXRBr7oyk+VA0G2EKg5LSHgzNAHPP7pdLXpvymI7eEE+Mxtn4hmYqnuOe3chC5wAAV5Tm6Ji3n514F/Z8i57JQdIdEPIs7nzZm8e04BGuprwZIKl5SEzvS85NCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GIIOYc+V; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GIIOYc+V" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A2C1C4CEDD; Mon, 24 Feb 2025 03:37:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740368274; bh=xwIW6vgWO9B/sjBeVdq8gCPHXMMU0QMfI7NpGr9S3II=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GIIOYc+V2pmiy19sbSc+fSh8OJGihOOUMhBhvGTgbexaPD6ZSaowd9IXP9zfoJX3E wL4VWJLC1m5XLcBdPgmC7Nq8dElyDwEv6sIKaCALJ/4153S8DPVCCTeaFdAZKw/6Y4 RStW4MY1+sjOwau5e6hsIeuYCjjVkxxetsf00evswB4OUC6jGYC4bUrkyRWd3pdZZp 2ilti9EBK+OwnXOmrLlywPOiLps2Grruie2YGeR9J+xRiIJHeXZRVziG6abjcFbrjp Vc/YCkCH2+LVI8kclujLm2HG8iFc4bCrQGMlg5eDEy3KnX5jpOQIWCdpjk+Q6w05Cc Aic0cTir202pQ== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v4 3/5] Squash to "bpf: Add mptcp_subflow bpf_iter" Date: Mon, 24 Feb 2025 11:37:38 +0800 Message-ID: <d2f825f15c288141a1812959a40d23f9a9681520.1740368110.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1740368110.git.tanggeliang@kylinos.cn> References: <cover.1740368110.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Drop the NULL check for 'msk' as Martin suggested, add more checks for 'sk'. Use the "struct sock *sk" instead of "struct mptcp-sock *msk" as the argument in the bpf_iter_mptcp_subflow_new as Martin suggested. v4: - drop sock_owned_by_user_nocheck and spin_is_locked. According to comments from Mat [2] and Martin [1], in this set mptcp_subflow bpf_iter only used from a cg sockopt bpf prog, no need to add these check at this moment. [1] https://lore.kernel.org/all/fdf0ddbe-e007-4a5f-bbdf-9a144e8fbe35@linux.dev/ [2] https://patchwork.kernel.org/project/mptcp/patch/f6469225598beecbf0bda12a4c= 33fafa86c0ff15.1739787744.git.tanggeliang@kylinos.cn/ v3: - continue to use sock_owned_by_user_nocheck and spin_is_locked checks instead of using msk_owned_by_me(). v2: - check the owner before assigning the msk as Mat suggested. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- net/mptcp/bpf.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 7e9d9c9a04cf..a6b07aaddcb2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -235,24 +235,24 @@ bpf_mptcp_subflow_ctx(const struct sock *sk) =20 __bpf_kfunc static int bpf_iter_mptcp_subflow_new(struct bpf_iter_mptcp_subflow *it, - struct mptcp_sock *msk) + struct sock *sk) { struct bpf_iter_mptcp_subflow_kern *kit =3D (void *)it; - struct sock *sk =3D (struct sock *)msk; + struct mptcp_sock *msk; =20 BUILD_BUG_ON(sizeof(struct bpf_iter_mptcp_subflow_kern) > sizeof(struct bpf_iter_mptcp_subflow)); BUILD_BUG_ON(__alignof__(struct bpf_iter_mptcp_subflow_kern) !=3D __alignof__(struct bpf_iter_mptcp_subflow)); =20 - kit->msk =3D msk; - if (!msk) + if (unlikely(!sk || !sk_fullsock(sk))) return -EINVAL; =20 - if (!sock_owned_by_user_nocheck(sk) && - !spin_is_locked(&sk->sk_lock.slock)) + if (sk->sk_protocol !=3D IPPROTO_MPTCP) return -EINVAL; =20 + msk =3D mptcp_sk(sk); + kit->msk =3D msk; kit->pos =3D &msk->conn_list; return 0; } --=20 2.43.0 From nobody Tue May 6 07:32:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 54B59F510 for <mptcp@lists.linux.dev>; Mon, 24 Feb 2025 03:37:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368276; cv=none; b=pTY35naccJVLA5Tw24QWDdj5fc0p1DCBl0BO4yeD/18MoiSnlUZk9oDcvWv9tLVifdApVYlmHJgkTE16ysIZLdIL0QzVmaX7z/boPCV6Rebe1ayz/mNs5v18bpXa1gRMQK73t7pvO6Q5pT9vWWkPFyEDcc6tfLIyWMGQl8CO/lE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368276; c=relaxed/simple; bh=o8gw8gLxpotp0mZg8+swJYM8o556x79xbkiQGfRHl5s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DrjwsoJJV0jkvWD92xWE2T+KJA+WZySsk7X6/Vq2WlxJE1+mMhDtRqj6kEO64tg56BBdV0mKmioWpezyP1c8RqXYJBKnGXzynYZKfqMPWRUhS8Jl+vgxvJOoiWNsA0crEggDw1vVtAgqUAavogujmmjPF/3mmuqV5o5XjOHpeqc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oSBo+Sxt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oSBo+Sxt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11FA2C4CEE4; Mon, 24 Feb 2025 03:37:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740368276; bh=o8gw8gLxpotp0mZg8+swJYM8o556x79xbkiQGfRHl5s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oSBo+Sxt0kW9sxcvDvciTv+Vl8Ce8abYXCAoBvPLal5ejagyBuh1XgJHge2SFO4o9 06He4dHII2Gu8JBcLFDrOaIBGLGkWVD5li6JvcwHQ6gsD81NJWT4mrAittKqtBwaaq 1JUmftd1UP8yo5fJoNlcrjFlPVDdyDHg0GPBAy8esg4g7qLZllMtvBWnyN/bipCaPV cr5gKyTj9Xgi+HdUP4p10IPXXFi5AbcGW4ny3lNFPElA5ORnVeCyizF8DBE0XMIYxQ hL4qypPT7iZrKK4bNqtak2BPAaPj1UspXPXaC2mUd3fxVKv0pKBSF7UcEPnyTWCHFq ocSSWXxNiD6KA== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v4 4/5] Revert "bpf: Acquire and release mptcp socket" Date: Mon, 24 Feb 2025 11:37:39 +0800 Message-ID: <685f8d65a65014fe4dbdfd743d1f2fd1b9e02d33.1740368110.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1740368110.git.tanggeliang@kylinos.cn> References: <cover.1740368110.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Drop this patch as Martin suggested. From Martin's review [1], this mptcp_sock_acquire() helper was a workaround only to please the verifier, but they were not needed. [1] https://lore.kernel.org/9b373a23-c093-42d8-b4ae-99f2e62e7681@linux.dev Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- net/mptcp/bpf.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index a6b07aaddcb2..ac7744c6006f 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -274,23 +274,6 @@ bpf_iter_mptcp_subflow_destroy(struct bpf_iter_mptcp_s= ubflow *it) { } =20 -__bpf_kfunc static struct -mptcp_sock *bpf_mptcp_sock_acquire(struct mptcp_sock *msk) -{ - struct sock *sk =3D (struct sock *)msk; - - if (sk && refcount_inc_not_zero(&sk->sk_refcnt)) - return msk; - return NULL; -} - -__bpf_kfunc static void bpf_mptcp_sock_release(struct mptcp_sock *msk) -{ - struct sock *sk =3D (struct sock *)msk; - - WARN_ON_ONCE(!sk || !refcount_dec_not_one(&sk->sk_refcnt)); -} - __bpf_kfunc struct mptcp_subflow_context * bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, unsigned= int pos) { @@ -311,8 +294,6 @@ BTF_ID_FLAGS(func, bpf_mptcp_subflow_ctx, KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_new, KF_ITER_NEW | KF_TRUSTED_AR= GS) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_next, KF_ITER_NEXT | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_destroy, KF_ITER_DESTROY) -BTF_ID_FLAGS(func, bpf_mptcp_sock_acquire, KF_ACQUIRE | KF_RET_NULL) -BTF_ID_FLAGS(func, bpf_mptcp_sock_release, KF_RELEASE) BTF_KFUNCS_END(bpf_mptcp_common_kfunc_ids) =20 static const struct btf_kfunc_id_set bpf_mptcp_common_kfunc_set =3D { --=20 2.43.0 From nobody Tue May 6 07:32:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 75F80F510 for <mptcp@lists.linux.dev>; Mon, 24 Feb 2025 03:37:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368278; cv=none; b=CDojfk/Fdn8i2KRBXupgQL8TiIbcF2HnN13lR7JAsA2mrL72jyrMzpKWPgtTBphEHaDdiPCvXEcmSmY2oekhNQyptK5I5jS3NCXqQ61TUnAIpwrYHyMHOyJTi0MQN+kWEN7ku+LkgRUD//23Jd9AhwuZATxxL+RQhnQ9qoleE9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740368278; c=relaxed/simple; bh=oTWOORozCRRkx+BuuccJDCPwDpq0zB0utA9Z7QbqOj4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BRtq1pMGSdlab6u83MYqEP8+1RZVbkAP/AViTguaW4oJUMuqQ/db18UlquWy5jL+VlopgK6LbUOANLHKBRiZgnn5FV7qZWV+S2vHeGyeloNphwjLlfDw3Ha6MP+L3y3TjcRM+vNTwRe0UdeFSCZM3rlnrYDn7YpGuzFakI9/hcg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AXks5ur4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AXks5ur4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2C9DC4CEDD; Mon, 24 Feb 2025 03:37:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740368278; bh=oTWOORozCRRkx+BuuccJDCPwDpq0zB0utA9Z7QbqOj4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AXks5ur4VNlOHNWEeD8Q+be6j0mqgRjO4F7jRuZtIBvfUVcABBAbG2/xZY7pXYxdn ZB715BdjAOBshCIn0k8gk8LmTj2y9iAG4oneXB3TBm6voBimsRsNWzRP+uWqEevsoX HFPyI06byPo9tb59A6cOrsVfkm0CknYr3UkIp1TEEBOQDuXuqffxzZo1z+Guq7Uf7c cSHIWCDGkmTm2ZgzCx3vhqrXftyQ2hHT/qPR6kM79UG3bmAfP1uyoG0ytTEzEDUEcj C7ROxPcWb+3f+SqAcYWpDHilO7qWBsvsxAh08NEzpLcXi+x3x3b3PttlErNFKNh2JK TbizeIy1cUu9w== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v4 5/5] Squash to "selftests/bpf: Add mptcp_subflow bpf_iter subtest" Date: Mon, 24 Feb 2025 11:37:40 +0800 Message-ID: <1250879bf18715fdf7acd525d52db6b83f325581.1740368110.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1740368110.git.tanggeliang@kylinos.cn> References: <cover.1740368110.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Use bpf_core_cast() instead of bpf_skc_to_mptcp_sock(). Change the 2nd parameter type of bpf_for_each() as 'struct sock'. Drop use of bpf_mptcp_sock_acquire/release. Drop declaration of bpf_mptcp_subflow_tcp_sock. It's no longer used. Update the comment for mptcp_subflow_tcp_sock(), which is a BPF helper, not a kfunc. Please update the commit log as: ''' This patch adds a "cgroup/getsockopt" program "iters_subflow" to test the newly added mptcp_subflow bpf_iter. Export mptcp_subflow helpers bpf_iter_mptcp_subflow_new/_next/_destroy and other helpers into bpf_experimental.h. Use bpf_for_each() to walk the subflow list of this msk. MPTCP-specific packet scheduler kfunc can be called in the loop. In this test, just add all subflow ids to local variable local_ids, then invoke the helper mptcp_subflow_tcp_sock() in the loop to pick a subsocket. Out of the loop, use bpf_mptcp_subflow_ctx() to get the subflow context of the picked subsocket and do some verification. Finally, assign local_ids to global variable ids so that the application can obtain this value. Add a subtest named test_iters_subflow to load and verify the newly added mptcp_subflow type bpf_iter example in test_mptcp. Use the helper endpoint_init() to add 3 new subflow endpoints. Send a byte of message to start the mptcp connection, and wait for new subflows to be added. getsockopt() is invoked to trigger the "cgroup/getsockopt" test program "iters_subflow". Check if skel->bss->ids equals 10 to verify whether this mptcp_subflow bpf_iter loops correctly as expected. ''' Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- tools/testing/selftests/bpf/bpf_experimental.h | 2 +- tools/testing/selftests/bpf/progs/mptcp_bpf.h | 5 ----- tools/testing/selftests/bpf/progs/mptcp_bpf_iters.c | 10 +++------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing= /selftests/bpf/bpf_experimental.h index 2ab3f0063c0f..6a96c56f0725 100644 --- a/tools/testing/selftests/bpf/bpf_experimental.h +++ b/tools/testing/selftests/bpf/bpf_experimental.h @@ -577,7 +577,7 @@ extern void bpf_iter_css_destroy(struct bpf_iter_css *i= t) __weak __ksym; =20 struct bpf_iter_mptcp_subflow; extern int bpf_iter_mptcp_subflow_new(struct bpf_iter_mptcp_subflow *it, - struct mptcp_sock *msk) __weak __ksym; + struct sock *sk) __weak __ksym; extern struct mptcp_subflow_context * bpf_iter_mptcp_subflow_next(struct bpf_iter_mptcp_subflow *it) __weak __ks= ym; extern void diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf.h b/tools/testing/= selftests/bpf/progs/mptcp_bpf.h index b1f6e1fb467e..72263672510a 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf.h +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf.h @@ -43,13 +43,8 @@ mptcp_subflow_tcp_sock(const struct mptcp_subflow_contex= t *subflow) } =20 /* ksym */ -extern struct mptcp_sock *bpf_mptcp_sock_acquire(struct mptcp_sock *msk) _= _ksym; -extern void bpf_mptcp_sock_release(struct mptcp_sock *msk) __ksym; - extern struct mptcp_subflow_context * bpf_mptcp_subflow_ctx(const struct sock *sk) __ksym; -extern struct sock * -bpf_mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow) __= ksym; =20 extern void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subf= low, bool scheduled) __ksym; diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_iters.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_iters.c index fd5691a4073b..a1d8f9b20259 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_iters.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_iters.c @@ -24,14 +24,11 @@ int iters_subflow(struct bpf_sockopt *ctx) if (ctx->level !=3D SOL_TCP || ctx->optname !=3D TCP_IS_MPTCP) return 1; =20 - msk =3D bpf_skc_to_mptcp_sock(sk); + msk =3D bpf_core_cast(sk, struct mptcp_sock); if (!msk || msk->pm.server_side || !msk->pm.subflows) return 1; =20 - msk =3D bpf_mptcp_sock_acquire(msk); - if (!msk) - return 1; - bpf_for_each(mptcp_subflow, subflow, msk) { + bpf_for_each(mptcp_subflow, subflow, (struct sock *)sk) { /* Here MPTCP-specific packet scheduler kfunc can be called: * this test is not doing anything really useful, only to * verify the iteration works. @@ -39,7 +36,7 @@ int iters_subflow(struct bpf_sockopt *ctx) =20 local_ids +=3D subflow->subflow_id; =20 - /* only to check the following kfunc works */ + /* only to check the following helper works */ ssk =3D mptcp_subflow_tcp_sock(subflow); } =20 @@ -58,6 +55,5 @@ int iters_subflow(struct bpf_sockopt *ctx) ids =3D local_ids; =20 out: - bpf_mptcp_sock_release(msk); return 1; } --=20 2.43.0