• Arnd Bergmann's avatar
    memblock: fix section mismatch warning · 34dc2efb
    Arnd Bergmann authored
    The inlining logic in clang-13 is rewritten to often not inline some
    functions that were inlined by all earlier compilers.
    
    In case of the memblock interfaces, this exposed a harmless bug of a
    missing __init annotation:
    
    WARNING: modpost: vmlinux.o(.text+0x507c0a): Section mismatch in reference from the function memblock_bottom_up() to the variable .meminit.data:memblock
    The function memblock_bottom_up() references
    the variable __meminitdata memblock.
    This is often because memblock_bottom_up lacks a __meminitdata
    annotation or the annotation of memblock is wrong.
    
    Interestingly, these annotations were present originally, but got removed
    with the explanation that the __init annotation prevents the function from
    getting inlined.  I checked this again and found that while this is the
    case with clang, gcc (version 7 through 10, did not test others) does
    inline the functions regardless.
    
    As the previous change was apparently intended to help the clang builds,
    reverting it to help the newer clang versions seems appropriate as well.
    gcc builds don't seem to care either way.
    
    Link: https://lkml.kernel.org/r/20210225133808.2188581-1-arnd@kernel.org
    Fixes: 5bdba520 ("mm: memblock: drop __init from memblock functions to make it inline")
    Reference: 2cfb3665 ("include/linux/memblock.h: add __init to memblock_set_bottom_up()")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reviewed-by: default avatarMike Rapoport <rppt@linux.ibm.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Faiyaz Mohammed <faiyazm@codeaurora.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Aslan Bakirov <aslan@fb.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    34dc2efb
memblock.h 20.1 KB