Re: [PATCH bpf] selftests/bpf: Fix a selftest compilation error with CONFIG_SMP=n

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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@xxxxxxxxx>
Signed-off-by: Yonghong Song <yhs@xxxxxx>
---
  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@xxxxxxxxxxxxx/

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




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux