Re: [peterz-queue:locking/core 21/21] WARNING: modpost: vmlinux.o(.text.unlikely+0x253ac): Section mismatch in reference from the function __set_bit() to the variable .init.data:initcall_level_names

From: Mark Rutland
Date: Wed Jul 14 2021 - 16:04:27 EST


Hi,

On Wed, Jul 14, 2021 at 09:08:08AM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git locking/core
> head: ceb71d863ae0bfca14303c189bbf5903a02ff95a
> commit: ceb71d863ae0bfca14303c189bbf5903a02ff95a [21/21] locking/atomic: add generic arch_*() bitops
> config: xtensa-allyesconfig (attached as .config)
> compiler: xtensa-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=ceb71d863ae0bfca14303c189bbf5903a02ff95a
> git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
> git fetch --no-tags peterz-queue locking/core
> git checkout ceb71d863ae0bfca14303c189bbf5903a02ff95a
> # save the attached .config to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross O=build_dir ARCH=xtensa SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>, old ones prefixed by <<):
>
> >> WARNING: modpost: vmlinux.o(.text.unlikely+0x253ac): Section mismatch in reference from the function __set_bit() to the variable .init.data:initcall_level_names
> The function __set_bit() references
> the variable __initdata initcall_level_names.

I can reproduce this with the kernel.org cross toolchain:

https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/9.3.0/x86_64-gcc-9.3.0-nolibc-xtensa-linux.tar.gz

... but the warning looks to be bogus; __set_bit() doesn't use that
symbol, and where that symbol is defined it looks to be used safely.

On the prior commit there was a similarly bogus warning in place of this
one:

| WARNING: modpost: vmlinux.o(.text.unlikely+0x24a10): Section mismatch in reference from the function bfq_pos_tree_add_move() to the variable .init.data:initcall_level_names
| The function bfq_pos_tree_add_move() references
| the variable __initdata initcall_level_names.
| This is often because bfq_pos_tree_add_move lacks a __initdata
| annotation or the annotation of initcall_level_names is wrong.

... so I think there is a latent bug here with the section mismatch
warning, and this commit has simply changed the bogus symbol it reports.

Given that, I think we should ignore this.

Thanks,
Mark.