Re: [PATCH v3 3/3] overflow: Remove is_non_negative() and is_negative()

kernel test robot
2025-12-22T10:04:36Z

Hi Vincent,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 3e7f562e20ee87a25e104ef4fce557d39d62fa85]

url: https://github.com/intel-lab-lkp/linux/commits/Vincent-Mailhol/kbuild-remove-gcc-s-Wtype-limits/20251220-190509
base: 3e7f562e20ee87a25e104ef4fce557d39d62fa85
patch link: https://lore.kernel.org/r/20251220-remove_wtype-limits-v3-3-24b170af700e%40kernel.org
patch subject: [PATCH v3 3/3] overflow: Remove is_non_negative() and is_negative()
config: x86_64-randconfig-161-20251222 (https://download.01.org/0day-ci/archive/20251222/202512221735.mRV4BZqB-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512221735.mRV4BZqB-lkp@intel.com/

smatch warnings:
fs/libfs.c:1628 generic_check_addressable() warn: unsigned '*_d' is never less than zero.
fs/libfs.c:1628 generic_check_addressable() warn: unsigned '_a' is never less than zero.
mm/vmalloc.c:4708 remap_vmalloc_range_partial() warn: unsigned '*_d' is never less than zero.
mm/vmalloc.c:4708 remap_vmalloc_range_partial() warn: unsigned '_a' is never less than zero.

vim +1628 fs/libfs.c

1b061d9247f71c Christoph Hellwig 2010-05-26 1613
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1614 /**
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1615 * generic_check_addressable - Check addressability of file system
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1616 * @blocksize_bits: log of file system block size
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1617 * @num_blocks: number of blocks in file system
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1618 *
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1619 * Determine whether a file system with @num_blocks blocks (and a
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1620 * block size of 2**@blocksize_bits) is addressable by the sector_t
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1621 * and page cache of the system. Return 0 if so and -EFBIG otherwise.
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1622 */
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1623 int generic_check_addressable(unsigned blocksize_bits, u64 num_blocks)
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1624 {
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1625 u64 last_fs_block = num_blocks - 1;
25050181b61aa0 Pankaj Raghav 2025-06-30 1626 u64 last_fs_page, max_bytes;
25050181b61aa0 Pankaj Raghav 2025-06-30 1627
25050181b61aa0 Pankaj Raghav 2025-06-30 @1628 if (check_shl_overflow(num_blocks, blocksize_bits, &max_bytes))
25050181b61aa0 Pankaj Raghav 2025-06-30 1629 return -EFBIG;
25050181b61aa0 Pankaj Raghav 2025-06-30 1630
25050181b61aa0 Pankaj Raghav 2025-06-30 1631 last_fs_page = (max_bytes >> PAGE_SHIFT) - 1;
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1632
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1633 if (unlikely(num_blocks == 0))
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1634 return 0;
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1635
25050181b61aa0 Pankaj Raghav 2025-06-30 1636 if (blocksize_bits < 9)
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1637 return -EINVAL;
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1638
a33f13efe05192 Joel Becker 2010-08-16 1639 if ((last_fs_block > (sector_t)(~0ULL) >> (blocksize_bits - 9)) ||
a33f13efe05192 Joel Becker 2010-08-16 1640 (last_fs_page > (pgoff_t)(~0ULL))) {
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1641 return -EFBIG;
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1642 }
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1643 return 0;
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1644 }
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1645 EXPORT_SYMBOL(generic_check_addressable);
30ca22c70e3ef0 Patrick J. LoPresti 2010-07-22 1646

--
0-DAY CI Kernel Test Service