Hi Kees, kernel test robot noticed the following build warnings:
[auto build test WARNING on tip/master] [also build test WARNING on tip/x86/core kees/for-next/pstore kees/for-next/kspp linus/master v6.15-rc7 next-20250523] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Kees-Cook/x86-string_32-h-Provide-basic-sanity-checks-for-fallback-memcpy/20250523-122803 base: tip/master patch link: https://lore.kernel.org/r/20250523042635.work.579-kees%40kernel.org patch subject: [PATCH] x86: string_32.h: Provide basic sanity checks for fallback memcpy() config: um-allnoconfig (https://download.01.org/0day-ci/archive/20250524/[email protected]/config) compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250524/[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 >>): >> fs/ioctl.c:773:2: warning: result of comparison of constant 4294967295 with >> expression of type 'typeof (sb->s_uuid_len)' (aka 'unsigned char') is always >> false [-Wtautological-constant-out-of-range-compare] 773 | memcpy(&u.uuid[0], &sb->s_uuid, sb->s_uuid_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ 1 warning generated. -- In file included from fs/select.c:33: In file included from include/net/busy_poll.h:18: In file included from include/net/ip.h:29: In file included from include/net/inet_sock.h:23: In file included from include/net/sock.h:66: In file included from include/net/dst.h:20: >> include/net/neighbour.h:582:3: warning: result of comparison of constant >> 4294967295 with expression of type 'typeof (dev->addr_len)' (aka 'const >> unsigned char') is always false >> [-Wtautological-constant-out-of-range-compare] 582 | memcpy(dst, n->ha, dev->addr_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ 1 warning generated. -- In file included from init/do_mounts.c:23: In file included from include/linux/nfs_fs.h:32: In file included from include/linux/sunrpc/clnt.h:29: In file included from include/net/ipv6.h:12: In file included from include/linux/ipv6.h:102: In file included from include/linux/tcp.h:19: In file included from include/net/sock.h:66: In file included from include/net/dst.h:20: >> include/net/neighbour.h:582:3: warning: result of comparison of constant >> 4294967295 with expression of type 'typeof (dev->addr_len)' (aka 'const >> unsigned char') is always false >> [-Wtautological-constant-out-of-range-compare] 582 | memcpy(dst, n->ha, dev->addr_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ In file included from init/do_mounts.c:23: In file included from include/linux/nfs_fs.h:38: >> include/linux/nfs.h:46:2: warning: result of comparison of constant >> 4294967295 with expression of type 'typeof (source->size)' (aka 'const >> unsigned short') is always false >> [-Wtautological-constant-out-of-range-compare] 46 | memcpy(target->data, source->data, source->size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ 2 warnings generated. -- >> kernel/printk/printk.c:1144:2: warning: result of comparison of constant >> 4294967295 with expression of type 'typeof (r->info->text_len)' (aka >> 'unsigned short') is always false >> [-Wtautological-constant-out-of-range-compare] 1144 | memcpy(&dest_r.text_buf[0], &r->text_buf[0], r->info->text_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ >> kernel/printk/printk.c:2338:3: warning: result of comparison of constant >> 4294967295 with expression of type 'typeof (trunc_msg_len)' (aka 'unsigned >> short') is always false [-Wtautological-constant-out-of-range-compare] 2338 | memcpy(&r.text_buf[text_len], trunc_msg, trunc_msg_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/string_32.h:154:24: note: expanded from macro 'memcpy' 154 | if (!(__n < 0 || __n == SIZE_MAX)) \ | ~~~ ^ ~~~~~~~~ 2 warnings generated. vim +773 fs/ioctl.c 4c5b47997521206 Miklos Szeredi 2021-04-07 764 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 765 static int ioctl_getfsuuid(struct file *file, void __user *argp) 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 766 { 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 767 struct super_block *sb = file_inode(file)->i_sb; 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 768 struct fsuuid2 u = { .len = sb->s_uuid_len, }; 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 769 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 770 if (!sb->s_uuid_len) abe6acfa7d7b666 Günther Noack 2024-04-05 771 return -ENOTTY; 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 772 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 @773 memcpy(&u.uuid[0], &sb->s_uuid, sb->s_uuid_len); 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 774 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 775 return copy_to_user(argp, &u, sizeof(u)) ? -EFAULT : 0; 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 776 } 41bcbe59c3b3fa7 Kent Overstreet 2024-02-06 777 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
