• Nathan Chancellor's avatar
    padata: Mark padata_work_init() as __ref · 0d24f1b7
    Nathan Chancellor authored
    
    
    When building arm64 allmodconfig + ThinLTO with clang and a proposed
    modpost update to account for -ffuncton-sections, the following warning
    appears:
    
      WARNING: modpost: vmlinux.o: section mismatch in reference: padata_work_init (section: .text.padata_work_init) -> padata_mt_helper (section: .init.text)
      WARNING: modpost: vmlinux.o: section mismatch in reference: padata_work_init (section: .text.padata_work_init) -> padata_mt_helper (section: .init.text)
    
    LLVM has optimized padata_work_init() to include the address of
    padata_mt_helper() directly because it inlined the other call to
    padata_work_init() with padata_parallel_worker(), meaning the remaining
    uses of padata_work_init() use padata_mt_helper() as the work_fn
    argument. This optimization causes modpost to complain since
    padata_work_init() is not __init, whereas padata_mt_helper() is.
    
    Since padata_work_init() is only called from __init code when
    padata_mt_helper() is passed as the work_fn argument, mark
    padata_work_init() as __ref, which makes it clear to modpost that this
    scenario is okay.
    Suggested-by: default avatarDaniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Acked-by: default avatarDaniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    0d24f1b7
padata.c 27.8 KB