lib/fortify_kunit.c:28:9: sparse: sparse: incompatible types for operation (==):

From: kernel test robot
Date: Mon Feb 06 2023 - 12:14:13 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d2d11f342b179f1894a901f143ec7c008caba43e
commit: 875bfd5276f31d09e811d31fca638b9f4d1205e8 fortify: Add KUnit test for FORTIFY_SOURCE internals
date: 5 months ago
config: arm64-randconfig-s041-20230206 (https://download.01.org/0day-ci/archive/20230207/202302070144.x9yAsFJX-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=875bfd5276f31d09e811d31fca638b9f4d1205e8
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 875bfd5276f31d09e811d31fca638b9f4d1205e8
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm64 SHELL=/bin/bash

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

sparse warnings: (new ones prefixed by >>)
lib/fortify_kunit.c:28:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:28:9: sparse: sparse: undefined identifier '__compiletime_strlen'
>> lib/fortify_kunit.c:28:9: sparse: sparse: incompatible types for operation (==):
>> lib/fortify_kunit.c:28:9: sparse: bad type const __left
>> lib/fortify_kunit.c:28:9: sparse: int const __right
lib/fortify_kunit.c:29:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:29:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:29:9: sparse: sparse: incompatible types for operation (==):
lib/fortify_kunit.c:29:9: sparse: bad type const __left
lib/fortify_kunit.c:29:9: sparse: int const __right
lib/fortify_kunit.c:30:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:30:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:30:9: sparse: sparse: incompatible types for operation (==):
lib/fortify_kunit.c:30:9: sparse: bad type const __left
lib/fortify_kunit.c:30:9: sparse: int const __right
lib/fortify_kunit.c:32:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:32:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:32:9: sparse: sparse: incompatible types for operation (==):
lib/fortify_kunit.c:32:9: sparse: bad type const __left
>> lib/fortify_kunit.c:32:9: sparse: unsigned long const __right
lib/fortify_kunit.c:34:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:34:9: sparse: sparse: undefined identifier '__compiletime_strlen'
lib/fortify_kunit.c:34:9: sparse: sparse: incompatible types for operation (==):
lib/fortify_kunit.c:34:9: sparse: bad type const __left
lib/fortify_kunit.c:34:9: sparse: unsigned long const __right
lib/fortify_kunit.c:56:16: sparse: sparse: undefined identifier '__compiletime_strlen'

vim +28 lib/fortify_kunit.c

25
26 static void known_sizes_test(struct kunit *test)
27 {
> 28 KUNIT_EXPECT_EQ(test, __compiletime_strlen("88888888"), 8);
29 KUNIT_EXPECT_EQ(test, __compiletime_strlen(array_of_10), 10);
30 KUNIT_EXPECT_EQ(test, __compiletime_strlen(ptr_of_11), 11);
31
> 32 KUNIT_EXPECT_EQ(test, __compiletime_strlen(array_unknown), SIZE_MAX);
33 /* Externally defined and dynamically sized string pointer: */
34 KUNIT_EXPECT_EQ(test, __compiletime_strlen(saved_command_line), SIZE_MAX);
35 }
36

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