lkml.org 
[lkml]   [2020]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.6 59/62] gcc-10: mark more functions __init to avoid section mismatch warnings
    Date
    From: Linus Torvalds <torvalds@linux-foundation.org>

    [ Upstream commit e99332e7b4cda6e60f5b5916cf9943a79dbef902 ]

    It seems that for whatever reason, gcc-10 ends up not inlining a couple
    of functions that used to be inlined before. Even if they only have one
    single callsite - it looks like gcc may have decided that the code was
    unlikely, and not worth inlining.

    The code generation difference is harmless, but caused a few new section
    mismatch errors, since the (now no longer inlined) function wasn't in
    the __init section, but called other init functions:

    Section mismatch in reference from the function kexec_free_initrd() to the function .init.text:free_initrd_mem()
    Section mismatch in reference from the function tpm2_calc_event_log_size() to the function .init.text:early_memremap()
    Section mismatch in reference from the function tpm2_calc_event_log_size() to the function .init.text:early_memunmap()

    So add the appropriate __init annotation to make modpost not complain.
    In both cases there were trivially just a single callsite from another
    __init function.

    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/firmware/efi/tpm.c | 2 +-
    init/initramfs.c | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c
    index 31f9f0e369b97..55b031d2c9890 100644
    --- a/drivers/firmware/efi/tpm.c
    +++ b/drivers/firmware/efi/tpm.c
    @@ -16,7 +16,7 @@
    int efi_tpm_final_log_size;
    EXPORT_SYMBOL(efi_tpm_final_log_size);

    -static int tpm2_calc_event_log_size(void *data, int count, void *size_info)
    +static int __init tpm2_calc_event_log_size(void *data, int count, void *size_info)
    {
    struct tcg_pcr_event2_head *header;
    int event_size, size = 0;
    diff --git a/init/initramfs.c b/init/initramfs.c
    index 8ec1be4d7d512..7a38012e1af74 100644
    --- a/init/initramfs.c
    +++ b/init/initramfs.c
    @@ -542,7 +542,7 @@ void __weak free_initrd_mem(unsigned long start, unsigned long end)
    }

    #ifdef CONFIG_KEXEC_CORE
    -static bool kexec_free_initrd(void)
    +static bool __init kexec_free_initrd(void)
    {
    unsigned long crashk_start = (unsigned long)__va(crashk_res.start);
    unsigned long crashk_end = (unsigned long)__va(crashk_res.end);
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-05-14 21:09    [W:2.956 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site