Re: [tip:x86/urgent] x86: Fix false positive section mismatch warningsin the apic code

From: Marcin Slusarz
Date: Sun Apr 19 2009 - 05:47:49 EST


tip-bot for Rakib Mullick pisze:
> Commit-ID: aa57a15ad17d284e62fbd24cf7e0eb628b2cb3f7
> Gitweb: http://git.kernel.org/tip/aa57a15ad17d284e62fbd24cf7e0eb628b2cb3f7
> Author: Rakib Mullick <rakib.mullick@xxxxxxxxx>
> AuthorDate: Sun, 19 Apr 2009 08:41:17 +0600
> Committer: Ingo Molnar <mingo@xxxxxxx>
> CommitDate: Sun, 19 Apr 2009 11:28:18 +0200
>
> x86: Fix false positive section mismatch warnings in the apic code
>
> find_unisys_acpi_oem_table() and unmap_unisys_acpi_oem_table() are non
> init functions, but these functions calls some init functions. But we
> need these functions as non-init functions.

Why? This warning seems to be valid.

>
> So annotate them via __ref.
>
> The following false positive warnings are fixed via this:
>
> WARNING: vmlinux.o(.text+0x16250): Section mismatch in reference from
> the function find_unisys_acpi_oem_table() to the function
> .init.text:early_acpi_os_unmap_memory()
> The function find_unisys_acpi_oem_table() references
> the function __init early_acpi_os_unmap_memory().
> This is often because find_unisys_acpi_oem_table lacks a __init
> annotation or the annotation of early_acpi_os_unmap_memory is wrong.
>
> WARNING: vmlinux.o(.text+0x16269): Section mismatch in reference from
> the function find_unisys_acpi_oem_table() to the function
> .init.text:early_acpi_os_unmap_memory()
> The function find_unisys_acpi_oem_table() references
> the function __init early_acpi_os_unmap_memory().
> This is often because find_unisys_acpi_oem_table lacks a __init
> annotation or the annotation of early_acpi_os_unmap_memory is wrong.
>
> WARNING: vmlinux.o(.text+0x16279): Section mismatch in reference from
> the function find_unisys_acpi_oem_table() to the function
> .init.text:__acpi_map_table()
> The function find_unisys_acpi_oem_table() references
> the function __init __acpi_map_table().
> This is often because find_unisys_acpi_oem_table lacks a __init
> annotation or the annotation of __acpi_map_table is wrong.
>
> WARNING: vmlinux.o(.text+0x16297): Section mismatch in reference from
> the function unmap_unisys_acpi_oem_table() to the function
> .init.text:__acpi_unmap_table()
> The function unmap_unisys_acpi_oem_table() references
> the function __init __acpi_unmap_table().
> This is often because unmap_unisys_acpi_oem_table lacks a __init
> annotation or the annotation of __acpi_unmap_table is wrong.
>
> [ Impact: annotate away section mismatch warnings ]
>
> Signed-off-by: Rakib Mullick <rakib.mullick@xxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> LKML-Reference: <b9df5fa10904181941u4a73fc97i80dfa90a50b8daf5@xxxxxxxxxxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
>
>
> ---
> arch/x86/kernel/apic/es7000_32.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c
> index 1c11b81..96c150c 100644
> --- a/arch/x86/kernel/apic/es7000_32.c
> +++ b/arch/x86/kernel/apic/es7000_32.c
> @@ -254,7 +254,7 @@ static int parse_unisys_oem(char *oemptr)
> }
>
> #ifdef CONFIG_ACPI
> -static int find_unisys_acpi_oem_table(unsigned long *oem_addr)
> +static int __ref find_unisys_acpi_oem_table(unsigned long *oem_addr)
> {
> struct acpi_table_header *header = NULL;
> struct es7000_oem_table *table;
> @@ -285,7 +285,7 @@ static int find_unisys_acpi_oem_table(unsigned long *oem_addr)
> return 0;
> }
>
> -static void unmap_unisys_acpi_oem_table(unsigned long oem_addr)
> +static void __ref unmap_unisys_acpi_oem_table(unsigned long oem_addr)
> {
> if (!oem_addr)
> return;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/