On Fri, Oct 20, 2023, at 19:26, Alexei Starovoitov wrote: > On Fri, Oct 20, 2023 at 6:27 AM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: >> @@ -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* No, I did test with a few hundred random configurations, but it looks like CONFIG_DEBUG_INFO_BTF is always disabled in my builds because I force-disable CONFIG_DEBUG_INFO to speed up my builds. I tried reproducing it with CONFIG_DEBUG_INFO_BTF enabled and it didn't immediately fail but it clearly makes sense that we'd need another #ifdef. Arnd