2023-10-19 00:23:03

by kernel test robot

[permalink] [raw]
Subject: arch/arm/include/asm/memory.h:298:23: warning: array subscript -1 is outside array bounds of 'const void[2147483647]'

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: dd72f9c7e512da377074d47d990564959b772643
commit: a9ff6961601d9aa0c42b6eb7d850371f31b1f5e6 ARM: mm: Make virt_to_pfn() a static inline
date: 5 months ago
config: arm-randconfig-r022-20230725 (https://download.01.org/0day-ci/archive/20231019/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231019/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

In file included from arch/arm/include/asm/page.h:166,
from arch/arm/include/asm/thread_info.h:14,
from include/linux/thread_info.h:60,
from include/asm-generic/preempt.h:5,
from ./arch/arm/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:78,
from include/linux/spinlock.h:56,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:7,
from include/linux/mm.h:7,
from arch/arm/kernel/hibernate.c:17:
In function 'virt_to_pfn',
inlined from 'pfn_is_nosave' at arch/arm/kernel/hibernate.c:29:33:
>> arch/arm/include/asm/memory.h:298:23: warning: array subscript -1 is outside array bounds of 'const void[2147483647]' [-Warray-bounds=]
298 | unsigned long kaddr = (unsigned long)p;
| ^~~~~
In file included from arch/arm/include/asm/sections.h:5,
from include/linux/interrupt.h:21,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from include/linux/swap.h:9,
from include/linux/suspend.h:5,
from arch/arm/kernel/hibernate.c:18:
include/asm-generic/sections.h: In function 'pfn_is_nosave':
include/asm-generic/sections.h:59:45: note: at offset -1 into object '__nosave_end' of size [0, 2147483647]
59 | extern __visible const void __nosave_begin, __nosave_end;
| ^~~~~~~~~~~~


vim +298 arch/arm/include/asm/memory.h

295
296 static inline unsigned long virt_to_pfn(const void *p)
297 {
> 298 unsigned long kaddr = (unsigned long)p;
299 return (((kaddr - PAGE_OFFSET) >> PAGE_SHIFT) +
300 PHYS_PFN_OFFSET);
301 }
302 #define __pa_symbol_nodebug(x) __virt_to_phys_nodebug((x))
303

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


2023-11-06 13:17:13

by Linus Walleij

[permalink] [raw]
Subject: Re: arch/arm/include/asm/memory.h:298:23: warning: array subscript -1 is outside array bounds of 'const void[2147483647]'

Hi Robot,

On Thu, Oct 19, 2023 at 2:22 AM kernel test robot <[email protected]> wrote:

> In function 'virt_to_pfn',
> inlined from 'pfn_is_nosave' at arch/arm/kernel/hibernate.c:29:33:
> >> arch/arm/include/asm/memory.h:298:23: warning: array subscript -1 is outside array bounds of 'const void[2147483647]' [-Warray-bounds=]
> 298 | unsigned long kaddr = (unsigned long)p;

What does this even mean?

> 296 static inline unsigned long virt_to_pfn(const void *p)
> 297 {
> > 298 unsigned long kaddr = (unsigned long)p;
> 299 return (((kaddr - PAGE_OFFSET) >> PAGE_SHIFT) +
> 300 PHYS_PFN_OFFSET);
> 301 }

Array out of bounds? It's not even an array! What's up with this warning?

Yours,
Linus Walleij