On Fri, 28 Sep 2012 16:46:44 +0530 raghu.prabhu13@xxxxxxxxx wrote: > From: Raghavendra D Prabhu <rprabhu@xxxxxxxxxxx> > > Following section mismatch warning is thrown during build; > > WARNING: vmlinux.o(.text+0x32408f): Section mismatch in reference from the function memblock_type_name() to the variable .meminit.data:memblock > The function memblock_type_name() references > the variable __meminitdata memblock. > This is often because memblock_type_name lacks a __meminitdata > annotation or the annotation of memblock is wrong. > > This is because memblock_type_name makes reference to memblock variable with > attribute __meminitdata. Hence, the warning (even if the function is inline). > > Signed-off-by: Raghavendra D Prabhu <rprabhu@xxxxxxxxxxx> > --- > mm/memblock.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/memblock.c b/mm/memblock.c > index 82aa349..8e7fb1f 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -41,7 +41,8 @@ static int memblock_memory_in_slab __initdata_memblock = 0; > static int memblock_reserved_in_slab __initdata_memblock = 0; > > /* inline so we don't get a warning when pr_debug is compiled out */ > -static inline const char *memblock_type_name(struct memblock_type *type) > +static inline __init_memblock > + const char *memblock_type_name(struct memblock_type *type) > { > if (type == &memblock.memory) > return "memory"; huh. If your compiler inlines that function, you won't get the warning. Another reason why inline-considered-harmful nowadays. Let's just nuke it. Also, please note the code layout issue. There are two ways we'll typically handle a definition like that: static inline __init_memblock const char *memblock_type_name(struct memblock_type *type) or static inline __init_memblock const char * memblock_type_name(struct memblock_type *type) You chose neither ;) From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: mm-avoid-section-mismatch-warning-for-memblock_type_name-fix remove inline Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Cc: Raghavendra D Prabhu <rprabhu@xxxxxxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/memblock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN mm/memblock.c~mm-avoid-section-mismatch-warning-for-memblock_type_name-fix mm/memblock.c --- a/mm/memblock.c~mm-avoid-section-mismatch-warning-for-memblock_type_name-fix +++ a/mm/memblock.c @@ -41,8 +41,8 @@ static int memblock_memory_in_slab __ini static int memblock_reserved_in_slab __initdata_memblock = 0; /* inline so we don't get a warning when pr_debug is compiled out */ -static inline __init_memblock - const char *memblock_type_name(struct memblock_type *type) +static __init_memblock const char * +memblock_type_name(struct memblock_type *type) { if (type == &memblock.memory) return "memory"; _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>