Re: [PATCH v4] memory_hotplug: Add a bounds check to __add_pages

From: kbuild test robot
Date: Thu Sep 26 2019 - 11:36:08 EST


Hi Alastair,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[cannot apply to v5.3 next-20190925]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Alastair-D-Silva/memory_hotplug-Add-a-bounds-check-to-__add_pages/20190926-094437
config: i386-randconfig-g004-201938 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

mm/memory_hotplug.c: In function 'check_hotplug_memory_addressable':
>> mm/memory_hotplug.c:286:15: warning: right shift count >= width of type [-Wshift-count-overflow]
if (max_addr >> MAX_PHYSMEM_BITS) {
^~
In file included from arch/x86/include/asm/bug.h:83:0,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/mm.h:9,
from mm/memory_hotplug.c:9:
>> mm/memory_hotplug.c:290:13: warning: left shift count >= width of type [-Wshift-count-overflow]
(1ul << (MAX_PHYSMEM_BITS + 1)) - 1);
^
include/asm-generic/bug.h:112:21: note: in definition of macro '__WARN_printf_taint'
do { __warn_printk(arg); __WARN_TAINT(taint); } while (0)
^~~
include/asm-generic/bug.h:135:3: note: in expansion of macro '__WARN_printf'
__WARN_printf(format); \
^~~~~~~~~~~~~
>> mm/memory_hotplug.c:287:3: note: in expansion of macro 'WARN'
WARN(1,
^~~~

vim +286 mm/memory_hotplug.c

280
281 static int check_hotplug_memory_addressable(unsigned long pfn,
282 unsigned long nr_pages)
283 {
284 unsigned long max_addr = ((pfn + nr_pages) << PAGE_SHIFT) - 1;
285
> 286 if (max_addr >> MAX_PHYSMEM_BITS) {
> 287 WARN(1,
288 "Hotplugged memory exceeds maximum addressable address, range=%#lx-%#lx, maximum=%#lx\n",
289 pfn << PAGE_SHIFT, max_addr,
> 290 (1ul << (MAX_PHYSMEM_BITS + 1)) - 1);
291 return -E2BIG;
292 }
293
294 return 0;
295 }
296

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip