On Fri, Aug 22, 2025 at 04:05:53PM +0200, Andrea Righi wrote: > Some distributions (e.g., CachyOS) support building the kernel with -O3, > but doing so may break kfuncs, resulting in their symbols not being > properly exported. > > In fact, with gcc -O3, some kfuncs may be optimized away despite being > annotated as noinline. This happens because gcc can still clone the > function during IPA optimizations, e.g., by duplicating or inlining it > into callers, and then dropping the standalone symbol. This breaks BTF > ID resolution since resolve_btfids relies on the presence of a global > symbol for each kfunc. > > Currently, this is not an issue for upstream, because we don't allow > building the kernel with -O3, but it may be safer to address it anyway, > to prevent potential issues in the future if compilers become more > aggressive with optimizations. > > Therefore, add __noclone to __bpf_kfunc to ensure kfuncs are never > cloned and remain distinct, globally visible symbols, regardless of > the optimization level. > > Fixes: 57e7c169cd6af ("bpf: Add __bpf_kfunc tag for marking kernel functions as kfuncs") > Signed-off-by: Andrea Righi <arighi@xxxxxxxxxx> Acked-by: David Vernet <void@xxxxxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature