Re: [PATCH] bpf: hide cgroup functions for configs without cgroups

From: Arnd Bergmann
Date: Fri Oct 20 2023 - 16:07:23 EST


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