mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
selftests/bpf: Fix a selftest compilation error with CONFIG_SMP=n
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 CONFIG_SMP set or not. Fixes:fe147956fc
("bpf/selftests: Add selftests for new task kfuncs") Fixes:48671232fc
("selftests/bpf: Add tests for bpf_rcu_read_lock()") Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: David Vernet <void@manifault.com> Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: David Vernet <void@manifault.com> Link: https://lore.kernel.org/bpf/20221213012224.379581-1-yhs@fb.com
This commit is contained in:
parent
d2b497a973
commit
ec9230b18b
@ -288,13 +288,13 @@ out:
|
||||
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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user