'''
The cfi_stubs pointer is added in the commit 2cd3e3772e41 ("x86/cfi,bpf:
Fix bpf_struct_ops CFI"), this patch initializes it as dummy stubs
__bpf_mptcp_sched_ops.
'''
Note:
BPF tests on export branch fail with this error:
BUG: kernel NULL pointer dereference, address: 0000000000000000
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP PTI
CPU: 3 PID: 1512 Comm: test_progs Tainted: G W IOE 6.7.0-rc5 #37
Hardware name: LENOVO 4180PG2/4180PG2, BIOS 83ET76WW (1.46 ) 07/05/2013
RIP: 0010:bpf_struct_ops_map_update_elem+0x4ee/0x610
This patch fixes this error. It can be applied after the commit
"bpf: Add bpf_mptcp_sched_ops"
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
net/mptcp/bpf.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c
index b92c9014ac2c..fb67768aa07d 100644
--- a/net/mptcp/bpf.c
+++ b/net/mptcp/bpf.c
@@ -147,6 +147,19 @@ static int bpf_mptcp_sched_init(struct btf *btf)
return 0;
}
+static void __bpf_mptcp_sched_init(struct mptcp_sock *msk)
+{
+}
+
+static void __bpf_mptcp_sched_release(struct mptcp_sock *msk)
+{
+}
+
+static struct mptcp_sched_ops __bpf_mptcp_sched_ops = {
+ .init = __bpf_mptcp_sched_init,
+ .release = __bpf_mptcp_sched_release,
+};
+
struct bpf_struct_ops bpf_mptcp_sched_ops = {
.verifier_ops = &bpf_mptcp_sched_verifier_ops,
.reg = bpf_mptcp_sched_reg,
@@ -155,6 +168,7 @@ struct bpf_struct_ops bpf_mptcp_sched_ops = {
.init_member = bpf_mptcp_sched_init_member,
.init = bpf_mptcp_sched_init,
.name = "mptcp_sched_ops",
+ .cfi_stubs = &__bpf_mptcp_sched_ops,
};
#endif /* CONFIG_BPF_JIT */
--
2.39.2
Hi Geliang,
On 06/01/2024 09:40, Geliang Tang wrote:
> '''
> The cfi_stubs pointer is added in the commit 2cd3e3772e41 ("x86/cfi,bpf:
> Fix bpf_struct_ops CFI"), this patch initializes it as dummy stubs
> __bpf_mptcp_sched_ops.
> '''
>
> Note:
>
> BPF tests on export branch fail with this error:
>
> BUG: kernel NULL pointer dereference, address: 0000000000000000
> #PF: supervisor read access in kernel mode
> #PF: error_code(0x0000) - not-present page
> PGD 0 P4D 0
> Oops: 0000 [#1] PREEMPT SMP PTI
> CPU: 3 PID: 1512 Comm: test_progs Tainted: G W IOE 6.7.0-rc5 #37
> Hardware name: LENOVO 4180PG2/4180PG2, BIOS 83ET76WW (1.46 ) 07/05/2013
> RIP: 0010:bpf_struct_ops_map_update_elem+0x4ee/0x610
>
> This patch fixes this error. It can be applied after the commit
> "bpf: Add bpf_mptcp_sched_ops"
Thank you for having checked and fixed that!
Is it OK for you if I squash it in "bpf: Add bpf_mptcp_sched_ops" commit?
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
Hi Matt,
On Mon, 2024-01-08 at 11:14 +0100, Matthieu Baerts wrote:
> Hi Geliang,
>
> On 06/01/2024 09:40, Geliang Tang wrote:
> > '''
> > The cfi_stubs pointer is added in the commit 2cd3e3772e41
> > ("x86/cfi,bpf:
> > Fix bpf_struct_ops CFI"), this patch initializes it as dummy stubs
> > __bpf_mptcp_sched_ops.
> > '''
> >
> > Note:
> >
> > BPF tests on export branch fail with this error:
> >
> > BUG: kernel NULL pointer dereference, address: 0000000000000000
> > #PF: supervisor read access in kernel mode
> > #PF: error_code(0x0000) - not-present page
> > PGD 0 P4D 0
> > Oops: 0000 [#1] PREEMPT SMP PTI
> > CPU: 3 PID: 1512 Comm: test_progs Tainted: G W IOE
> > 6.7.0-rc5 #37
> > Hardware name: LENOVO 4180PG2/4180PG2, BIOS 83ET76WW (1.46 )
> > 07/05/2013
> > RIP: 0010:bpf_struct_ops_map_update_elem+0x4ee/0x610
> >
> > This patch fixes this error. It can be applied after the commit
> > "bpf: Add bpf_mptcp_sched_ops"
>
> Thank you for having checked and fixed that!
>
> Is it OK for you if I squash it in "bpf: Add bpf_mptcp_sched_ops"
> commit?
Yes, it's better to squash it. Please do this when merging it.
I'm not sure whether "get_subflow" should be initialized here too. If
it should be, I'll send another squash-to patch to fix this.
Thanks,
-Geliang
>
> Cheers,
> Matt
Hi Geliang,
On 08/01/2024 13:37, Geliang Tang wrote:
> Hi Matt,
>
> On Mon, 2024-01-08 at 11:14 +0100, Matthieu Baerts wrote:
>> Hi Geliang,
>>
>> On 06/01/2024 09:40, Geliang Tang wrote:
>>> '''
>>> The cfi_stubs pointer is added in the commit 2cd3e3772e41
>>> ("x86/cfi,bpf:
>>> Fix bpf_struct_ops CFI"), this patch initializes it as dummy stubs
>>> __bpf_mptcp_sched_ops.
>>> '''
>>>
>>> Note:
>>>
>>> BPF tests on export branch fail with this error:
>>>
>>> BUG: kernel NULL pointer dereference, address: 0000000000000000
>>> #PF: supervisor read access in kernel mode
>>> #PF: error_code(0x0000) - not-present page
>>> PGD 0 P4D 0
>>> Oops: 0000 [#1] PREEMPT SMP PTI
>>> CPU: 3 PID: 1512 Comm: test_progs Tainted: G W IOE
>>> 6.7.0-rc5 #37
>>> Hardware name: LENOVO 4180PG2/4180PG2, BIOS 83ET76WW (1.46 )
>>> 07/05/2013
>>> RIP: 0010:bpf_struct_ops_map_update_elem+0x4ee/0x610
>>>
>>> This patch fixes this error. It can be applied after the commit
>>> "bpf: Add bpf_mptcp_sched_ops"
>>
>> Thank you for having checked and fixed that!
>>
>> Is it OK for you if I squash it in "bpf: Add bpf_mptcp_sched_ops"
>> commit?
>
> Yes, it's better to squash it. Please do this when merging it.
>
> I'm not sure whether "get_subflow" should be initialized here too. If
> it should be, I'll send another squash-to patch to fix this.
Good point, I guess it should. When I look at bpf_tcp_ca.c, it looks
like they implemented all function pointers. Except get_info(), but this
one is marked as unsupported.
I just added it when applying your patch. Please tell me if I did it wrong.
While at it, I also updated your email address (I really thought I did
it before, but apparently not...)
New patches for t/upstream:
- 810cc99b7dd6: bpf: Add mptcp_sched_ops CFI
- 197ce89d9597: mptcp: bpf: add get_subflow for CFI
- Results: ca5de126f347..10ca1d146a6a (export)
- ca17d989b252: tg:msg: update Geliang's email address
- 9553337100f5: tg:msg: update Geliang's email address
- 404ca606684e: tg:msg: update Geliang's email address
- 75f8cc7247d5: tg:msg: update Geliang's email address
- d86fc89e4e11: tg:msg: update Geliang's email address
- e8708c02eace: tg:msg: update Geliang's email address
- 039488fe8e2e: tg:msg: update Geliang's email address
- 9bbd8dbced1d: tg:msg: update Geliang's email address
- 8f03f584b792: tg:msg: update Geliang's email address
- b500d1b51c5b: tg:msg: update Geliang's email address
- 4e489b19e9f0: tg:msg: update Geliang's email address
- e2029e1cfb8b: tg:msg: update Geliang's email address
- 134f88acf139: tg:msg: update Geliang's email address
- b708aa7547e1: tg:msg: update Geliang's email address
- a814d467f027: tg:msg: update Geliang's email address
- 2b1c988725e8: tg:msg: update Geliang's email address
- Results: 10ca1d146a6a..bd5be2c4e44b (export)
Tests are now in progress:
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20240108T172308
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
© 2016 - 2026 Red Hat, Inc.