From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 8AD0A39EF0F for ; Mon, 22 Jun 2026 09:39:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121159; cv=none; b=DdJf6RtQqOvDke2rSwUOR2xiZ/aZRhRPc+vDI0Kd2/h9krfvKy+0AW02kz1YwnOGjzXYYGo5t36fgPb45LqDK2hQuKVQFXtcRkOs7qt1dCX5C9GFvZ3CNHv3vyd8wyvdtKi0xz7JByEEiW1Cy6Fp/n7nPHSZAw3vxO6kJB2qscA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121159; c=relaxed/simple; bh=IErpFUPr4F0Wg4DT70wFdFLClTSczriFqwGywlHWx4k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nj7m6chI3cTpWo7YH6lVzYMc9Fs19RWzSWjQeurTWcoD15xPyaOCiTHj/Tt9ZlcnrS+9ZzgGNimMZ5EEsLd1LaH2+ajKCuIIGFOGMnhK+3IHAD22ainFgpTjc62gGeI9YjPKiwoQ1Wg8/uL+X0FDMnE7Njp9qQFLVJspydvuCjU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=L9xxiWWF; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="L9xxiWWF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 084311F00A3A; Mon, 22 Jun 2026 09:39:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121158; bh=xPjQnFtjHyJFDw1ksBOha8hhRPCso1Lg4TAxQ0/QqOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=L9xxiWWFLFUM1EFNKwppm/7Kc5rfPHlknHLfg8j9Kdqu6f2jcOnZPf1Q2Izdo/QSF j4b8sE80u6w8NgbJHPrrrNsSymRvMZFv2muifW/la05c8pY2sYusVQ2o5mU9+Kjs5C /3GqdxJ12p8JXvrD+DKCx5OEYJXfzFuPqS7xO3rE+4+tRU8+SG+91mdqB2zvJJ/kXh ueh9z1tgksrdtkAhOlFDg/rV1cR/TcUrTKOxKmSO2TpDKxLRfPx2Z5XYMcE/ahFgii XmFiqxWdiTAIyu282AYT4X4vFWGd2TeE2Xr5TgaJ2FyHcNZ7bz3vekID1BdrD1PMnm OSQW++Q1sgKjQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 1/6] Squash to "bpf: Add mptcp_subflow bpf_iter" Date: Mon, 22 Jun 2026 17:38:58 +0800 Message-ID: <9fa1b234bb66304014259d057fff2d1cd52faaad.1782120674.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Zero iterator state on error paths and add sk_type =3D=3D SOCK_STREAM check= to prevent raw sockets from bypassing validation. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 08bb037f0951..cb2dddb7c3a6 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -252,11 +252,18 @@ bpf_iter_mptcp_subflow_new(struct bpf_iter_mptcp_subf= low *it, BUILD_BUG_ON(__alignof__(struct bpf_iter_mptcp_subflow_kern) !=3D __alignof__(struct bpf_iter_mptcp_subflow)); =20 - if (unlikely(!sk || !sk_fullsock(sk))) + if (unlikely(!sk || !sk_fullsock(sk))) { + kit->msk =3D NULL; + kit->pos =3D NULL; return -EINVAL; + } =20 - if (sk->sk_protocol !=3D IPPROTO_MPTCP) + if (sk->sk_type !=3D SOCK_STREAM || + sk->sk_protocol !=3D IPPROTO_MPTCP) { + kit->msk =3D NULL; + kit->pos =3D NULL; return -EINVAL; + } =20 msk =3D mptcp_sk(sk); =20 --=20 2.53.0 From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 704C639EF19 for ; Mon, 22 Jun 2026 09:39:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121161; cv=none; b=DC6owevhXAbheMCJZLDsZviTeGZMFpMn/PcHawaCJLxKWrD5bmbYomzgx2tPCBfHGJhNwRpi/HltYRYTC3Ej4ykKSJYPyIOXr7LBVmCe6c2gJmUCX4EbVvcupnCyd3GWGcOvNpvzSCaBp7AESsbHIm/5r80wRQfzsm+w2r5QNOs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121161; c=relaxed/simple; bh=qB+X0nIYJuppH3GnnVQVDO1NDPHKh4aCdlZo6MWapjI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sZESWaCM301IuewRmkdPsTjvKClzHOat9jsFaAs7IrKkoGgpdIUIbKCTU/iklyAynNHeYax9Jmb3hqf/0w9awGcMCIEEPkDKYI1hHbmPEstcPiIIHgzi+K/QeGZ2NCwmnAOzY2nq7sID2iaFidXHzGlOWw3OliI2Ydtp9cDfTDI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oqBQ6rjJ; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oqBQ6rjJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D74D71F000E9; Mon, 22 Jun 2026 09:39:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121160; bh=jywbFWJJQMb4voZKch/mhIhEN+ZQuAx8Z5zBj3xYH84=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=oqBQ6rjJaVnRIrkjFCB0jUF2O5Fd/oJeLFqfK8zegHzDSc1Iuecg9D1Avply2d8ro mJ2bpRxwOQTi9c5yo4humQsvDlCWQbCJuLXXiCBrNb5TXxDlhp+VM21Cp5ZTeRXRgA eki/u5rm56FEfcqlfUo/S1TWela4g4g1ZMD7FaWPdxV0nICfjgmJJJ6kSvAJe1P6g4 vF4R0y8GFM0n9VAF5+dRCQzxmy2BqraF3yqFOVb6J3MznO/v68hdM0nu7C14PZkTXq R6oupS3gehB9fZOLIL7TRHxC3ESl5t+zjR9T597oO+305bhxoTKq48JoLdq6NIqUOc CK84WDYzUGZWA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 2/6] Squash to "bpf: Export mptcp packet scheduler helpers" Date: Mon, 22 Jun 2026 17:38:59 +0800 Message-ID: <301756f0f5009b7fbf8b88055358024d36c419d8.1782120674.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Change bpf_sk_stream_memory_free() to accept struct mptcp_subflow_context * instead of struct sock *, and fix return type from NULL to false. Add sk_type =3D=3D SOCK_STREAM check for safety. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index cb2dddb7c3a6..85ec7b0e00d2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -296,15 +296,16 @@ __bpf_kfunc static bool bpf_mptcp_subflow_queues_empt= y(struct sock *sk) return tcp_rtx_queue_empty(sk); } =20 -__bpf_kfunc static bool bpf_sk_stream_memory_free(const struct sock *sk__i= gn) +__bpf_kfunc static bool +bpf_sk_stream_memory_free(const struct mptcp_subflow_context *subflow) { - const struct sock *sk =3D sk__ign; + const struct sock *sk =3D mptcp_subflow_tcp_sock(subflow); =20 - if (sk && sk_fullsock(sk) && + if (sk && sk_fullsock(sk) && sk->sk_type =3D=3D SOCK_STREAM && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) return sk_stream_memory_free(sk); =20 - return NULL; + return false; } =20 __bpf_kfunc_end_defs(); @@ -327,7 +328,7 @@ BTF_ID_FLAGS(func, mptcp_subflow_set_scheduled) BTF_ID_FLAGS(func, mptcp_subflow_active) BTF_ID_FLAGS(func, mptcp_set_timeout) BTF_ID_FLAGS(func, mptcp_wnd_end) -BTF_ID_FLAGS(func, bpf_sk_stream_memory_free, KF_RET_NULL) +BTF_ID_FLAGS(func, bpf_sk_stream_memory_free) BTF_ID_FLAGS(func, bpf_mptcp_subflow_queues_empty) BTF_ID_FLAGS(func, mptcp_pm_subflow_chk_stale, KF_SLEEPABLE) BTF_KFUNCS_END(bpf_mptcp_common_kfunc_ids) --=20 2.53.0 From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 048A439EF20 for ; Mon, 22 Jun 2026 09:39:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121163; cv=none; b=QpJ6czwlr8dSp3wqndVyNBjciplSlUjqlGwc7UFpuwIneiPdCDMb5EbIecRVTnF2QS3niNpntGaB+S82wgORxcweukh68rIApyPqWuvAO4VowUeBIBRrPZjL7YYLVWt2vTXQQJ5R8Jq7YqHUa7GEb9PO0NO2UiDT9cJvOo1ODlM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121163; c=relaxed/simple; bh=bCh78dZo2sHquuUBCZaaXydeTmOo5SQeL3E4JgL5T2o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J+Zttoc/Fx2mK5fZO9y36P+xm8fcc+yyKiZJMv3BbJuusc2cqhwsDM5MmQnvBBjdRHQxKROdOJE5it+y9nQAINwzRkqlPdrYa/bEqjbRoM0ypi5h+qCHsdGYA6BffQxfMG853H6+CnC8qwVbqzHaW4S1t5Ps445Q8rOo63jLOEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GMeN5u9b; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GMeN5u9b" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B026C1F00A3A; Mon, 22 Jun 2026 09:39:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121161; bh=YBj6yhCMlsceLp52pRRElKzmZbd7e0qeJHjKri+Uo3k=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=GMeN5u9bC5LKfTLR2heIAlBcb8c/Wzsok7daTwoKS0ywQSxoV7WnrJ+BMRiqhQlWL AN/QvMr7OE772VCYIIHsnVo1tV2P1aXCxEDlgws9i+uzA70+uudwLlaz9n7+Qjqoci DWng66wCF0gEz1HOSxAGViCE9UhPajKL7mvMCSoVYXNvac8oF7VxGJyRYyW1wfVhO2 WMVfxrd8Rc125mjgAmE04Wk6psf/wWiJBjfSv2UEqIZagx/Ww3IgGIzbARh77rr8sB HcXsnQQib6OOgqoMkREnVj9gNqCDR1gWWPIoQgMns2MeSN8iFHR4bNxHbyZPLBkwYo dL/xhhGA30r9Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 3/6] Squash to "selftests/bpf: Add bpf_burst scheduler & test" Date: Mon, 22 Jun 2026 17:39:00 +0800 Message-ID: <3af5e83ca2e41b3003c3db6ef5d16321f2af5699.1782120674.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Adapt burst scheduler to use the new bpf_sk_stream_memory_free() signature (storing subflow pointers instead of sock pointers in send_info array). Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_burst.c | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_burst.c index 693fab55f7be..48c22f5bce32 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c @@ -9,6 +9,11 @@ char _license[] SEC("license") =3D "GPL"; =20 #define MPTCP_SEND_BURST_SIZE 65428 =20 +struct bpf_subflow_send_info { + struct mptcp_subflow_context *subflow; + u64 linger_time; +}; + #define SSK_MODE_ACTIVE 0 #define SSK_MODE_BACKUP 1 #define SSK_MODE_MAX 2 @@ -18,7 +23,7 @@ char _license[] SEC("license") =3D "GPL"; extern bool mptcp_subflow_active(struct mptcp_subflow_context *subflow) __= ksym; extern void mptcp_set_timeout(struct sock *sk) __ksym; extern __u64 mptcp_wnd_end(const struct mptcp_sock *msk) __ksym; -extern bool bpf_sk_stream_memory_free(const struct sock *sk) __ksym; +extern bool bpf_sk_stream_memory_free(const struct mptcp_subflow_context *= subflow) __ksym; extern bool bpf_mptcp_subflow_queues_empty(struct sock *sk) __ksym; extern void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struc= t sock *ssk) __ksym; =20 @@ -52,7 +57,7 @@ void BPF_PROG(mptcp_sched_burst_release, struct mptcp_soc= k *msk) SEC("struct_ops") int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) { - struct subflow_send_info send_info[SSK_MODE_MAX]; + struct bpf_subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; struct sock *sk =3D (struct sock *)msk; __u32 pace, burst, wmem; @@ -62,7 +67,7 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) =20 /* pick the subflow with the lower wmem/wspace ratio */ for (i =3D 0; i < SSK_MODE_MAX; ++i) { - send_info[i].ssk =3D NULL; + send_info[i].subflow =3D NULL; send_info[i].linger_time =3D -1; } =20 @@ -85,7 +90,7 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) =20 linger_time =3D div_u64((__u64)ssk->sk_wmem_queued << 32, pace); if (linger_time < send_info[backup].linger_time) { - send_info[backup].ssk =3D ssk; + send_info[backup].subflow =3D subflow; send_info[backup].linger_time =3D linger_time; } } @@ -93,18 +98,14 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) =20 /* pick the best backup if no other subflow is active */ if (!nr_active) - send_info[SSK_MODE_ACTIVE].ssk =3D send_info[SSK_MODE_BACKUP].ssk; + send_info[SSK_MODE_ACTIVE].subflow =3D send_info[SSK_MODE_BACKUP].subflo= w; =20 - ssk =3D send_info[SSK_MODE_ACTIVE].ssk; - if (!ssk || !bpf_sk_stream_memory_free(ssk)) - return -1; - - subflow =3D bpf_mptcp_subflow_ctx(ssk); - if (!subflow) + subflow =3D send_info[SSK_MODE_ACTIVE].subflow; + if (!subflow || !bpf_sk_stream_memory_free(subflow)) return -1; =20 burst =3D min(MPTCP_SEND_BURST_SIZE, mptcp_wnd_end(msk) - msk->snd_nxt); - ssk =3D bpf_core_cast(ssk, struct sock); + ssk =3D mptcp_subflow_tcp_sock(subflow); wmem =3D ssk->sk_wmem_queued; if (!burst) goto out; --=20 2.53.0 From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 9CE433A0B1D for ; Mon, 22 Jun 2026 09:39:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121164; cv=none; b=blbOU3ECKG2qo2I76iiGHSrdv/AlbH/YA/5t1C3Wz6nN2nbOoCLFh/PqjQqRtnSHfAN/gTRIIP40uLc7U68+PV41cqV7qReQBCIbFT/ntG2thZnuO4XQVlBV/bHd3qGlylYCFNPP8/gNOFTf4RDIGLAXznkV3KzQLU3/xti4Cug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121164; c=relaxed/simple; bh=beyNEC/6nwgJ7+a1IEaAQoJx4AREtMeGT5b/RrLGU+k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k5QJ9GJM0kODorq9qpj4OTyTc2zg476JInubWEgGINmCTpmW6RwZ526l1WHmUuI0fL3K7goTad3lGnPb0OHX5oZVQ/Q0zrXgniPVKQevCV6KD6yCYaEOQeWS5iuPTfrv4imiTHzEygEXmyVqQb+9jMHs5cfL6gmthFms+LAbBns= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ecDDSbBx; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ecDDSbBx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7122A1F000E9; Mon, 22 Jun 2026 09:39:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121163; bh=k5aH9geT9y3rx659GKBTGPOVjtHInLsuq5ysP7A2Cq0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ecDDSbBxPcawGjvgVfuRUT1z6q0OoKBPniHcPqgQso7Ib/1/2g+yxbeFx/AfFn3Fq sTgSQdgvVP1/5aQ0ffMa+BikpTOuloIGFRiH00Fvayn/NrEgza+mX0JW4j/EOs5/Ne M0SNgOEJE8/wL7wyH0x4my+YF7ccLtixBUq0EGsVajHJoHDSNz43bMG+1rQucoQ1mB NX4x3/4+Uczbn1weKC/EHX+rotXvHOg81y4mIqLYaMvNaa8tw5ud6tuA64hsFk/D7f iHn5SJITz20soKPfuyLIuntVHe0X8fSiwyBbVtK3jLOYKptzxZoJ+BHb3Zd8NbICLY MCG3ztl4Bc7dw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 4/6] Squash to "bpf: Export mptcp packet scheduler helpers" 2 Date: Mon, 22 Jun 2026 17:39:01 +0800 Message-ID: <9da8028711cbb18a1a7ddddb893c15a9bbe5f4ce.1782120674.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Remove __ign suffix from bpf_mptcp_subflow_ctx() and add sk_type =3D=3D SOCK_STREAM check to prevent raw socket misuse. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 85ec7b0e00d2..577b815775a2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -220,11 +220,9 @@ struct bpf_iter_mptcp_subflow_kern { __bpf_kfunc_start_defs(); =20 __bpf_kfunc static struct mptcp_subflow_context * -bpf_mptcp_subflow_ctx(const struct sock *sk__ign) +bpf_mptcp_subflow_ctx(const struct sock *sk) { - const struct sock *sk =3D sk__ign; - - if (sk && sk_fullsock(sk) && + if (sk && sk_fullsock(sk) && sk->sk_type =3D=3D SOCK_STREAM && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) return mptcp_subflow_ctx(sk); =20 --=20 2.53.0 From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 555603A05C4 for ; Mon, 22 Jun 2026 09:39:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121166; cv=none; b=WGoxaYR7Ox12Gg4SyMt6mqYVbDuWkd6ML8Ip4pbFa2hX/FvtNxpKFfcw0E4KMHtQR7iz4uuXGpknt/dbJPHtDCMGOgvqvziIeSSl960a94ITB0J0oBeg7HMWQF5FPNSslvDU3EO0UhlajyczmwpG8wto8mZQQUWbSg+z6+Wb7FM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121166; c=relaxed/simple; bh=nvKtB6cWQU6jGJyD9lZOP2a7XdO8+ioT4ska3aZ+mZI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rNec5e5z/k5hvKJcW8viCZGyXChl91eiK5OuFSP9yQliaDtoNdRsNhIavQ92HiGDg3mX7AHfKJkdijiySL+xlqzfEePuEIcClIrZBPi4SaqiaLriCHuxSLDZKsbGSHWabx3wpgVhNT+L5no1ErXXE+ZJJl5MI4Ba039ov/YKEHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LxQJFWFl; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LxQJFWFl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC0E01F00A3D; Mon, 22 Jun 2026 09:39:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121165; bh=vXRAaj2pbgMW1FkG+K0dYT2Mld1BOclxfeYQJoAoRao=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=LxQJFWFlkrMocT70sSbtQ/0ybWWKzwSAIYyZLCQ/UKXgBKP6sTfeA+cVBqmcVNCdK CHAp7kQWtLm88hZ2sRV8wsVogjEoRDaRFIQbw+rQsKsKAtGsqHGoaY55YjH0NGfWS5 kAEA6xn/4d7eW2UjuulH8+wUnYGI62IAN16MW+Rpcz7x81xqIW+aMH6F59LKDL1fu8 BgLvebRahBZeDFEmD/vEo30SPV9z66obbMvsJ9eZgNuaiJEHRcmiZ1803t5eP5LDM5 hG76nFYyxZlccl3yXGO2C9kxuugovYMwUz0G2SiytVjFFQUZJE8kM/Koj+gvgLvTlf /2Nz/fLh1h5HQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 5/6] Squash to "selftests/bpf: Add bpf_first scheduler & test" Date: Mon, 22 Jun 2026 17:39:02 +0800 Message-ID: <59c2a3be0e3942fbc4321a88a411c9a8a4f09829.1782120674.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Replace bpf_mptcp_subflow_ctx(msk->first) with a bpf_for_each iteration over subflows to find the one whose tcp_sock matches msk->first. This avoids passing an untrusted pointer (msk->first) to a kfunc that requires trusted/referenced arguments, resolving the verifier error "R1 must be referenced or trusted". Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c index 96b002808ce7..13ecee9833cf 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -20,13 +20,16 @@ SEC("struct_ops") int BPF_PROG(bpf_first_get_send, struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; - - subflow =3D bpf_mptcp_subflow_ctx(msk->first); - if (!subflow) - return -1; - - mptcp_subflow_set_scheduled(subflow, true); - return 0; + struct sock *ssk; + + bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + ssk =3D bpf_mptcp_subflow_tcp_sock(subflow); + if (ssk =3D=3D msk->first) { + mptcp_subflow_set_scheduled(subflow, true); + return 0; + } + } + return -1; } =20 SEC(".struct_ops.link") --=20 2.53.0 From nobody Sun Jul 5 05:52:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 332263A16A1 for ; Mon, 22 Jun 2026 09:39:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121168; cv=none; b=HypiKo98vu6ge2BUSojc9XrkhbBcoK+bMa4jRqlNipOB9sN4g1ZvYwGOTD0Nv3pQBHTo+D/jOuPSJFmp9n/Ubm9uwj/Kn2C3n7eUnIH+3LOzsDGfvpvcrGyYYgWma4fqnNWMJMKYG0QzVtw5z0sgYs/wvIR2mMSGoebXnlLEXNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782121168; c=relaxed/simple; bh=HSVHdZ9FvFrkqL9nrrZTv7VzB6JIRdqzbrIXDlMn2vU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TwbtvjG72AwpUMvkRbtT7KmpwM14UQ3HcXw5NwwJrpxWWyz7j+R2JM2v5gWF8/RTPhwBIQ4g+34W9IBHJHqml8mPEiKS45yymTplC0diTL24RkLq1swYF3bkZ8DuRjVKQw7w8z+gbyyst6+N1W88lqdrGoAlTn4h2XpfGn/i/Yc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NvjsLxP3; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NvjsLxP3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CD1C1F000E9; Mon, 22 Jun 2026 09:39:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782121166; bh=/h/0Acka8EVlY31LkuuvWJz8yeLpPn4ytT4iocaqNsc=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=NvjsLxP3lE3P0KegZsOCgoX4Gzq2z9ac2gRjXRkuNZriOmKZeQfgMNnMI2kZC00NU PAadVVqWpIOwCgRtOj+T2k3QQgnyPjtv/o0bvXkr/n/hcTNcZDZm8XhegNahGXfGhZ h7PIXEPq/vo2jK9V8IfZ5MToiRUuiqaRKKo87E+ScVm6uolv1JuAq+suDqfQIkBgL2 HiO1h7C4t8xM9/POj23MCOVcmQJiXDsBUK/yY1mOqwMLJeTTJkT00CpNy1mDHzuV8a V8fzm5qidLTf+rdajhq9/Fd7gI/MIcffn9aobk8AZpvN5S6b63/GQso4DH00pB9+n2 eZS9BCj1b3WuA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 6/6] Squash to "selftests/bpf: Add bpf_rr scheduler & test" Date: Mon, 22 Jun 2026 17:39:03 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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" From: Geliang Tang Rewrite bpf_rr_get_send to use a single traversal over subflows instead of calling bpf_mptcp_subflow_ctx() and bpf_iter_mptcp_subflow_next(). The new implementation: - Records the first subflow as a fallback - Uses a flag to find the subflow after ptr->last_snd - Falls back to first when last_snd is NULL or not found This eliminates unsafe pointer handling and avoids verifier trust issues. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_rr.c | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testi= ng/selftests/bpf/progs/mptcp_bpf_rr.c index 3c685c77f67f..10cef8abf206 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -33,33 +33,37 @@ void BPF_PROG(mptcp_sched_rr_release, struct mptcp_sock= *msk) SEC("struct_ops") int BPF_PROG(bpf_rr_get_send, struct mptcp_sock *msk) { - struct mptcp_subflow_context *subflow, *next; + struct mptcp_subflow_context *subflow, *first =3D NULL, *next =3D NULL; struct mptcp_rr_storage *ptr; + bool found =3D false; =20 ptr =3D bpf_sk_storage_get(&mptcp_rr_map, msk, 0, BPF_LOCAL_STORAGE_GET_F_CREATE); if (!ptr) return -1; =20 - next =3D bpf_mptcp_subflow_ctx(msk->first); - if (!next) - return -1; - - if (!ptr->last_snd) - goto out; - bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { - if (mptcp_subflow_tcp_sock(subflow) =3D=3D ptr->last_snd) { - subflow =3D bpf_iter_mptcp_subflow_next(&___it); - if (!subflow) - break; + if (!first) + first =3D subflow; + + if (!ptr->last_snd) + break; =20 + if (found) { next =3D subflow; break; } + + if (mptcp_subflow_tcp_sock(subflow) =3D=3D ptr->last_snd) + found =3D true; } =20 -out: + if (!first) + return -1; + + if (!next) + next =3D first; + mptcp_subflow_set_scheduled(next, true); ptr->last_snd =3D mptcp_subflow_tcp_sock(next); return 0; --=20 2.53.0