* arch/um/kernel/um_arch.c:336 linux_main() warn: impossible condition '(task_size > 1024 * (1 << 22)) => (0-u32max > 4294967296)'
@ 2024-12-18 19:46 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-12-18 19:46 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Benjamin Berg <benjamin.berg@intel.com>
CC: Johannes Berg <johannes.berg@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: aef25be35d23ec768eed08bfcf7ca3cf9685bc28
commit: 830003c73d190259e45d0a99a0e3d14cb73e0af0 um: Limit TASK_SIZE to the addressable range
date: 10 weeks ago
:::::: branch date: 22 hours ago
:::::: commit date: 10 weeks ago
config: um-randconfig-r073-20241219 (https://download.01.org/0day-ci/archive/20241219/202412190317.9HCF0iDF-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412190317.9HCF0iDF-lkp@intel.com/
smatch warnings:
arch/um/kernel/um_arch.c:336 linux_main() warn: impossible condition '(task_size > 1024 * (1 << 22)) => (0-u32max > 4294967296)'
vim +336 arch/um/kernel/um_arch.c
d8fb32f4790f2a2 Anton Ivanov 2021-03-12 304
7a3a06d0e158fc8 Alon Bar-Lev 2007-02-12 305 int __init linux_main(int argc, char **argv)
^1da177e4c3f415 Linus Torvalds 2005-04-16 306 {
^1da177e4c3f415 Linus Torvalds 2005-04-16 307 unsigned long avail, diff;
^1da177e4c3f415 Linus Torvalds 2005-04-16 308 unsigned long virtmem_size, max_physmem;
60a2988aea701a6 Jeff Dike 2008-05-12 309 unsigned long stack;
3af9c5bed1b8f28 WANG Cong 2008-04-28 310 unsigned int i;
3af9c5bed1b8f28 WANG Cong 2008-04-28 311 int add;
^1da177e4c3f415 Linus Torvalds 2005-04-16 312
^1da177e4c3f415 Linus Torvalds 2005-04-16 313 for (i = 1; i < argc; i++) {
ba180fd437156f7 Jeff Dike 2007-10-16 314 if ((i == 1) && (argv[i][0] == ' '))
ba180fd437156f7 Jeff Dike 2007-10-16 315 continue;
^1da177e4c3f415 Linus Torvalds 2005-04-16 316 add = 1;
^1da177e4c3f415 Linus Torvalds 2005-04-16 317 uml_checksetup(argv[i], &add);
^1da177e4c3f415 Linus Torvalds 2005-04-16 318 if (add)
^1da177e4c3f415 Linus Torvalds 2005-04-16 319 add_arg(argv[i]);
^1da177e4c3f415 Linus Torvalds 2005-04-16 320 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 321 if (have_root == 0)
d7ffac33631b2f7 Thomas Meyer 2021-01-05 322 add_arg(DEFAULT_COMMAND_LINE_ROOT);
d7ffac33631b2f7 Thomas Meyer 2021-01-05 323
d7ffac33631b2f7 Thomas Meyer 2021-01-05 324 if (have_console == 0)
d7ffac33631b2f7 Thomas Meyer 2021-01-05 325 add_arg(DEFAULT_COMMAND_LINE_CONSOLE);
^1da177e4c3f415 Linus Torvalds 2005-04-16 326
40fb16a360d9c64 Tom Spink 2008-06-05 327 host_task_size = os_get_top_address();
91f0a0c5cc5bc86 Benjamin Berg 2024-09-19 328 /* reserve a few pages for the stubs */
91f0a0c5cc5bc86 Benjamin Berg 2024-09-19 329 stub_start = host_task_size - STUB_DATA_PAGES * PAGE_SIZE;
6032aca0deb9c13 Johannes Berg 2023-04-14 330 /* another page for the code portion */
6032aca0deb9c13 Johannes Berg 2023-04-14 331 stub_start -= PAGE_SIZE;
6032aca0deb9c13 Johannes Berg 2023-04-14 332 host_task_size = stub_start;
bfc58e2b98e9973 Johannes Berg 2021-01-13 333
830003c73d19025 Benjamin Berg 2024-09-19 334 /* Limit TASK_SIZE to what is addressable by the page table */
830003c73d19025 Benjamin Berg 2024-09-19 335 task_size = host_task_size;
830003c73d19025 Benjamin Berg 2024-09-19 @336 if (task_size > (unsigned long long) PTRS_PER_PGD * PGDIR_SIZE)
830003c73d19025 Benjamin Berg 2024-09-19 337 task_size = PTRS_PER_PGD * PGDIR_SIZE;
830003c73d19025 Benjamin Berg 2024-09-19 338
536788fe2d28e11 Jeff Dike 2008-02-08 339 /*
536788fe2d28e11 Jeff Dike 2008-02-08 340 * TASK_SIZE needs to be PGDIR_SIZE aligned or else exit_mmap craps
536788fe2d28e11 Jeff Dike 2008-02-08 341 * out
536788fe2d28e11 Jeff Dike 2008-02-08 342 */
830003c73d19025 Benjamin Berg 2024-09-19 343 task_size = task_size & PGDIR_MASK;
536788fe2d28e11 Jeff Dike 2008-02-08 344
ba180fd437156f7 Jeff Dike 2007-10-16 345 /* OS sanity checks that need to happen before the kernel runs */
60d339f6fe08310 Gennady Sharapov 2005-09-03 346 os_early_checks();
cb66504d65e5421 Paolo 'Blaisorblade' Giarrusso 2005-07-27 347
d8fb32f4790f2a2 Anton Ivanov 2021-03-12 348 get_host_cpu_features(parse_host_cpu_flags, parse_cache_line);
d8fb32f4790f2a2 Anton Ivanov 2021-03-12 349
^1da177e4c3f415 Linus Torvalds 2005-04-16 350 brk_start = (unsigned long) sbrk(0);
77bf4400319db9d Jeff Dike 2007-10-16 351
ba180fd437156f7 Jeff Dike 2007-10-16 352 /*
ba180fd437156f7 Jeff Dike 2007-10-16 353 * Increase physical memory size for exec-shield users
ba180fd437156f7 Jeff Dike 2007-10-16 354 * so they actually get what they asked for. This should
ba180fd437156f7 Jeff Dike 2007-10-16 355 * add zero for non-exec shield users
ba180fd437156f7 Jeff Dike 2007-10-16 356 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 357
^1da177e4c3f415 Linus Torvalds 2005-04-16 358 diff = UML_ROUND_UP(brk_start) - UML_ROUND_UP(&_end);
^1da177e4c3f415 Linus Torvalds 2005-04-16 359 if (diff > 1024 * 1024) {
d3878bb8003009d Masami Hiramatsu 2017-05-18 360 os_info("Adding %ld bytes to physical memory to account for "
^1da177e4c3f415 Linus Torvalds 2005-04-16 361 "exec-shield gap\n", diff);
^1da177e4c3f415 Linus Torvalds 2005-04-16 362 physmem_size += UML_ROUND_UP(brk_start) - UML_ROUND_UP(&_end);
^1da177e4c3f415 Linus Torvalds 2005-04-16 363 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 364
05eacfd00ccf239 Nicolas Iooss 2014-10-12 365 uml_physmem = (unsigned long) __binary_start & PAGE_MASK;
^1da177e4c3f415 Linus Torvalds 2005-04-16 366
^1da177e4c3f415 Linus Torvalds 2005-04-16 367 /* Reserve up to 4M after the current brk */
^1da177e4c3f415 Linus Torvalds 2005-04-16 368 uml_reserved = ROUND_4M(brk_start) + (1 << 22);
^1da177e4c3f415 Linus Torvalds 2005-04-16 369
96b644bdec977b9 Serge Hallyn 2006-10-02 370 setup_machinename(init_utsname()->machine);
^1da177e4c3f415 Linus Torvalds 2005-04-16 371
cd05cbed42b7316 Tiwei Bie 2024-09-16 372 physmem_size = (physmem_size + PAGE_SIZE - 1) & PAGE_MASK;
^1da177e4c3f415 Linus Torvalds 2005-04-16 373 iomem_size = (iomem_size + PAGE_SIZE - 1) & PAGE_MASK;
cd05cbed42b7316 Tiwei Bie 2024-09-16 374
536788fe2d28e11 Jeff Dike 2008-02-08 375 max_physmem = TASK_SIZE - uml_physmem - iomem_size - MIN_VMALLOC;
^1da177e4c3f415 Linus Torvalds 2005-04-16 376
^1da177e4c3f415 Linus Torvalds 2005-04-16 377 if (physmem_size + iomem_size > max_physmem) {
cd05cbed42b7316 Tiwei Bie 2024-09-16 378 physmem_size = max_physmem - iomem_size;
cd05cbed42b7316 Tiwei Bie 2024-09-16 379 os_info("Physical memory size shrunk to %llu bytes\n",
cd05cbed42b7316 Tiwei Bie 2024-09-16 380 physmem_size);
^1da177e4c3f415 Linus Torvalds 2005-04-16 381 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 382
^1da177e4c3f415 Linus Torvalds 2005-04-16 383 high_physmem = uml_physmem + physmem_size;
^1da177e4c3f415 Linus Torvalds 2005-04-16 384 end_iomem = high_physmem + iomem_size;
^1da177e4c3f415 Linus Torvalds 2005-04-16 385 high_memory = (void *) end_iomem;
^1da177e4c3f415 Linus Torvalds 2005-04-16 386
^1da177e4c3f415 Linus Torvalds 2005-04-16 387 start_vm = VMALLOC_START;
^1da177e4c3f415 Linus Torvalds 2005-04-16 388
^1da177e4c3f415 Linus Torvalds 2005-04-16 389 virtmem_size = physmem_size;
60a2988aea701a6 Jeff Dike 2008-05-12 390 stack = (unsigned long) argv;
60a2988aea701a6 Jeff Dike 2008-05-12 391 stack &= ~(1024 * 1024 - 1);
60a2988aea701a6 Jeff Dike 2008-05-12 392 avail = stack - start_vm;
ba180fd437156f7 Jeff Dike 2007-10-16 393 if (physmem_size > avail)
ba180fd437156f7 Jeff Dike 2007-10-16 394 virtmem_size = avail;
^1da177e4c3f415 Linus Torvalds 2005-04-16 395 end_vm = start_vm + virtmem_size;
^1da177e4c3f415 Linus Torvalds 2005-04-16 396
^1da177e4c3f415 Linus Torvalds 2005-04-16 397 if (virtmem_size < physmem_size)
d3878bb8003009d Masami Hiramatsu 2017-05-18 398 os_info("Kernel virtual memory size shrunk to %lu bytes\n",
^1da177e4c3f415 Linus Torvalds 2005-04-16 399 virtmem_size);
^1da177e4c3f415 Linus Torvalds 2005-04-16 400
^1da177e4c3f415 Linus Torvalds 2005-04-16 401 os_flush_stdout();
^1da177e4c3f415 Linus Torvalds 2005-04-16 402
77bf4400319db9d Jeff Dike 2007-10-16 403 return start_uml();
^1da177e4c3f415 Linus Torvalds 2005-04-16 404 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 405
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-12-18 19:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-18 19:46 arch/um/kernel/um_arch.c:336 linux_main() warn: impossible condition '(task_size > 1024 * (1 << 22)) => (0-u32max > 4294967296)' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.