On Fri, Oct 20, 2023 at 6:27 AM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > > From: Arnd Bergmann <arnd@xxxxxxxx> > > When cgroups are disabled, the newly added functions don't build: > > kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new': > kernel/bpf/task_iter.c:917:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function) > 917 | case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED: > | ^~~~~~~~~~~~~~~~~~~ > kernel/bpf/task_iter.c:925:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter' > 925 | kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter)); > | ^~~~~~ > > Hide them in an #ifdef section. > > Fixes: 9c66dc94b62ae ("bpf: Introduce css_task open-coded iterator kfuncs") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > kernel/bpf/task_iter.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/kernel/bpf/task_iter.c b/kernel/bpf/task_iter.c > index 654601dd6b493..15a184f4f954d 100644 > --- a/kernel/bpf/task_iter.c > +++ b/kernel/bpf/task_iter.c > @@ -904,6 +904,7 @@ __diag_push(); > __diag_ignore_all("-Wmissing-prototypes", > "Global functions as their definitions will be in vmlinux BTF"); > > +#ifdef CONFIG_CGROUPS > __bpf_kfunc int bpf_iter_css_task_new(struct bpf_iter_css_task *it, > struct cgroup_subsys_state *css, unsigned int flags) > { > @@ -947,6 +948,7 @@ __bpf_kfunc void bpf_iter_css_task_destroy(struct bpf_iter_css_task *it) > css_task_iter_end(kit->css_it); > bpf_mem_free(&bpf_global_ma, kit->css_it); > } > +#endif Did you actually test build it without cgroups and with bpf+btf? I suspect the resolve_btfid step should be failing the build. It needs #ifdef CONFIG_CGROUPS around BTF_ID_FLAGS(func, bpf_iter_css_task*