Message ID | 20221212234617.4058942-1-yhs@fb.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | [bpf] selftests/bpf: Fix a selftest compilation error with CONFIG_SMP=n | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for bpf |
netdev/apply | fail | Patch does not apply to bpf |
bpf/vmtest-bpf-PR | fail | merge-conflict |
On Mon, Dec 12, 2022 at 03:46:17PM -0800, Yonghong Song wrote: > Kernel test robot reported bpf selftest build failure when CONFIG_SMP > is not set. The error message looks below: > > >> progs/rcu_read_lock.c:256:34: error: no member named 'last_wakee' in 'struct task_struct' > last_wakee = task->real_parent->last_wakee; > ~~~~~~~~~~~~~~~~~ ^ > 1 error generated. > > When CONFIG_SMP is not set, the field 'last_wakee' is not available in struct > 'task_struct'. Hence the above compilation failure. To fix the issue, let us > choose another field 'group_leader' which is available regardless of > CONDFIG_SMP set or not. s/CONDFIG_SMP/CONFIG_SMP > > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Yonghong Song <yhs@fb.com> > --- > tools/testing/selftests/bpf/progs/rcu_read_lock.c | 8 ++++---- > tools/testing/selftests/bpf/progs/task_kfunc_failure.c | 2 +- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/rcu_read_lock.c b/tools/testing/selftests/bpf/progs/rcu_read_lock.c > index 125f908024d3..5cecbdbbb16e 100644 > --- a/tools/testing/selftests/bpf/progs/rcu_read_lock.c > +++ b/tools/testing/selftests/bpf/progs/rcu_read_lock.c > @@ -288,13 +288,13 @@ int nested_rcu_region(void *ctx) > SEC("?fentry.s/" SYS_PREFIX "sys_getpgid") > int task_untrusted_non_rcuptr(void *ctx) > { > - struct task_struct *task, *last_wakee; > + struct task_struct *task, *group_leader; > > task = bpf_get_current_task_btf(); > bpf_rcu_read_lock(); > - /* the pointer last_wakee marked as untrusted */ > - last_wakee = task->real_parent->last_wakee; > - (void)bpf_task_storage_get(&map_a, last_wakee, 0, 0); > + /* the pointer group_leader marked as untrusted */ > + group_leader = task->real_parent->group_leader; > + (void)bpf_task_storage_get(&map_a, group_leader, 0, 0); > bpf_rcu_read_unlock(); > return 0; > } > diff --git a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c > index 87fa1db9d9b5..1b47b94dbca0 100644 > --- a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c > +++ b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c > @@ -73,7 +73,7 @@ int BPF_PROG(task_kfunc_acquire_trusted_walked, struct task_struct *task, u64 cl > struct task_struct *acquired; > > /* Can't invoke bpf_task_acquire() on a trusted pointer obtained from walking a struct. */ > - acquired = bpf_task_acquire(task->last_wakee); > + acquired = bpf_task_acquire(task->group_leader); Ah, I missed that you'd sent this out before I sent out [0]. Thanks for fixing this for me. I'm fine with just merging this patch and dropping [0] if it's easier for the maintainers. [0]: https://lore.kernel.org/all/20221212235344.1563280-1-void@manifault.com/ > bpf_task_release(acquired); > > return 0; > -- > 2.30.2 >
On Mon, Dec 12, 2022 at 05:58:20PM -0600, David Vernet wrote: > On Mon, Dec 12, 2022 at 03:46:17PM -0800, Yonghong Song wrote: > > Kernel test robot reported bpf selftest build failure when CONFIG_SMP > > is not set. The error message looks below: > > > > >> progs/rcu_read_lock.c:256:34: error: no member named 'last_wakee' in 'struct task_struct' > > last_wakee = task->real_parent->last_wakee; > > ~~~~~~~~~~~~~~~~~ ^ > > 1 error generated. > > > > When CONFIG_SMP is not set, the field 'last_wakee' is not available in struct > > 'task_struct'. Hence the above compilation failure. To fix the issue, let us > > choose another field 'group_leader' which is available regardless of > > CONDFIG_SMP set or not. > > s/CONDFIG_SMP/CONFIG_SMP > > > > > Reported-by: kernel test robot <lkp@intel.com> > > Signed-off-by: Yonghong Song <yhs@fb.com> Also: Acked-by: David Vernet <void@manifault.com>
On 12/12/22 3:58 PM, David Vernet wrote: > On Mon, Dec 12, 2022 at 03:46:17PM -0800, Yonghong Song wrote: >> Kernel test robot reported bpf selftest build failure when CONFIG_SMP >> is not set. The error message looks below: >> >> >> progs/rcu_read_lock.c:256:34: error: no member named 'last_wakee' in 'struct task_struct' >> last_wakee = task->real_parent->last_wakee; >> ~~~~~~~~~~~~~~~~~ ^ >> 1 error generated. >> >> When CONFIG_SMP is not set, the field 'last_wakee' is not available in struct >> 'task_struct'. Hence the above compilation failure. To fix the issue, let us >> choose another field 'group_leader' which is available regardless of >> CONDFIG_SMP set or not. > > s/CONDFIG_SMP/CONFIG_SMP > >> >> Reported-by: kernel test robot <lkp@intel.com> >> Signed-off-by: Yonghong Song <yhs@fb.com> >> --- >> tools/testing/selftests/bpf/progs/rcu_read_lock.c | 8 ++++---- >> tools/testing/selftests/bpf/progs/task_kfunc_failure.c | 2 +- >> 2 files changed, 5 insertions(+), 5 deletions(-) >> >> diff --git a/tools/testing/selftests/bpf/progs/rcu_read_lock.c b/tools/testing/selftests/bpf/progs/rcu_read_lock.c >> index 125f908024d3..5cecbdbbb16e 100644 >> --- a/tools/testing/selftests/bpf/progs/rcu_read_lock.c >> +++ b/tools/testing/selftests/bpf/progs/rcu_read_lock.c >> @@ -288,13 +288,13 @@ int nested_rcu_region(void *ctx) >> SEC("?fentry.s/" SYS_PREFIX "sys_getpgid") >> int task_untrusted_non_rcuptr(void *ctx) >> { >> - struct task_struct *task, *last_wakee; >> + struct task_struct *task, *group_leader; >> >> task = bpf_get_current_task_btf(); >> bpf_rcu_read_lock(); >> - /* the pointer last_wakee marked as untrusted */ >> - last_wakee = task->real_parent->last_wakee; >> - (void)bpf_task_storage_get(&map_a, last_wakee, 0, 0); >> + /* the pointer group_leader marked as untrusted */ >> + group_leader = task->real_parent->group_leader; >> + (void)bpf_task_storage_get(&map_a, group_leader, 0, 0); >> bpf_rcu_read_unlock(); >> return 0; >> } >> diff --git a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c >> index 87fa1db9d9b5..1b47b94dbca0 100644 >> --- a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c >> +++ b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c >> @@ -73,7 +73,7 @@ int BPF_PROG(task_kfunc_acquire_trusted_walked, struct task_struct *task, u64 cl >> struct task_struct *acquired; >> >> /* Can't invoke bpf_task_acquire() on a trusted pointer obtained from walking a struct. */ >> - acquired = bpf_task_acquire(task->last_wakee); >> + acquired = bpf_task_acquire(task->group_leader); > > Ah, I missed that you'd sent this out before I sent out [0]. Thanks for > fixing this for me. I'm fine with just merging this patch and dropping > [0] if it's easier for the maintainers. > > [0]: https://lore.kernel.org/all/20221212235344.1563280-1-void@manifault.com/ I found the above as well since with the kernel-test-bot config, both rcu_read_lock.c and task_kfunc_failure.c caused compilation errors. Let me send another version by fixing the above CONFIG_SMP typo, adding proper fix tags and adding your sign-off and ack. Thanks! > >> bpf_task_release(acquired); >> >> return 0; >> -- >> 2.30.2 >>
diff --git a/tools/testing/selftests/bpf/progs/rcu_read_lock.c b/tools/testing/selftests/bpf/progs/rcu_read_lock.c index 125f908024d3..5cecbdbbb16e 100644 --- a/tools/testing/selftests/bpf/progs/rcu_read_lock.c +++ b/tools/testing/selftests/bpf/progs/rcu_read_lock.c @@ -288,13 +288,13 @@ int nested_rcu_region(void *ctx) SEC("?fentry.s/" SYS_PREFIX "sys_getpgid") int task_untrusted_non_rcuptr(void *ctx) { - struct task_struct *task, *last_wakee; + struct task_struct *task, *group_leader; task = bpf_get_current_task_btf(); bpf_rcu_read_lock(); - /* the pointer last_wakee marked as untrusted */ - last_wakee = task->real_parent->last_wakee; - (void)bpf_task_storage_get(&map_a, last_wakee, 0, 0); + /* the pointer group_leader marked as untrusted */ + group_leader = task->real_parent->group_leader; + (void)bpf_task_storage_get(&map_a, group_leader, 0, 0); bpf_rcu_read_unlock(); return 0; } diff --git a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c index 87fa1db9d9b5..1b47b94dbca0 100644 --- a/tools/testing/selftests/bpf/progs/task_kfunc_failure.c +++ b/tools/testing/selftests/bpf/progs/task_kfunc_failure.c @@ -73,7 +73,7 @@ int BPF_PROG(task_kfunc_acquire_trusted_walked, struct task_struct *task, u64 cl struct task_struct *acquired; /* Can't invoke bpf_task_acquire() on a trusted pointer obtained from walking a struct. */ - acquired = bpf_task_acquire(task->last_wakee); + acquired = bpf_task_acquire(task->group_leader); bpf_task_release(acquired); return 0;