Skip to content

Commit 51b7b67

Browse files
Yonghong SongKernel Patches Daemon
authored andcommitted
bpf: Make migrate_{disable,enable} always inline if in header file
With latest bpf/bpf-next tree and latest pahole master, I got the following build failure: $ make LLVM=1 -j ... LD vmlinux.o GEN .vmlinux.objs ... BTF .tmp_vmlinux1.btf.o ... AS .tmp_vmlinux2.kallsyms.o LD vmlinux.unstripped BTFIDS vmlinux.unstripped WARN: resolve_btfids: unresolved symbol migrate_enable WARN: resolve_btfids: unresolved symbol migrate_disable make[2]: *** [/home/yhs/work/bpf-next/scripts/Makefile.vmlinux:72: vmlinux.unstripped] Error 255 make[2]: *** Deleting file 'vmlinux.unstripped' make[1]: *** [/home/yhs/work/bpf-next/Makefile:1242: vmlinux] Error 2 make: *** [/home/yhs/work/bpf-next/Makefile:248: __sub-make] Error 2 In pahole patch [1], if two functions having identical names but different addresses, then this function name is considered ambiguous and later on this function will not be added to vmlinux/module BTF. Commit 378b770 ("sched: Make migrate_{en,dis}able() inline") changed original global funcitons migrate_{enable,disable} to - in kernel/sched/core.c, migrate_{enable,disable} are global funcitons. - in other places, migrate_{enable,disable} may survive as static functions since they are marked as 'inline' in include/linux/sched.h and the 'inline' attribute does not garantee inlining. If I build with clang compiler (make LLVM=1 -j) (llvm21 and llvm22), I found there are four symbols for migrate_{enable,disable} respectively, three static functions and one global function. With the above pahole patch [1], migrate_{enable,disable} are not in vmlinux BTF and this will cause later resolve_btfids failure. Making migrate_{enable,disable} always inline in include/linux/sched.h can fix the problem. [1] https://lore.kernel.org/dwarves/[email protected]/ Fixes: 378b770 ("sched: Make migrate_{en,dis}able() inline") Cc: Menglong Dong <[email protected]> Cc: Ihor Solodrai <[email protected]> Signed-off-by: Yonghong Song <[email protected]>
1 parent 6593a90 commit 51b7b67

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

include/linux/sched.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2407,12 +2407,12 @@ static inline void __migrate_enable(void) { }
24072407
* be defined in kernel/sched/core.c.
24082408
*/
24092409
#ifndef INSTANTIATE_EXPORTED_MIGRATE_DISABLE
2410-
static inline void migrate_disable(void)
2410+
static __always_inline void migrate_disable(void)
24112411
{
24122412
__migrate_disable();
24132413
}
24142414

2415-
static inline void migrate_enable(void)
2415+
static __always_inline void migrate_enable(void)
24162416
{
24172417
__migrate_enable();
24182418
}

0 commit comments

Comments
 (0)