tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: f26c3abc432a2026ba9ee7767061a1f88aead6ec commit: b0d4adaf3b3c4402d9c3b6186e02aa1e4f7985cd [7181/8804] fat: Add KUnit tests for checksums and timestamps :::::: branch date: 19 hours ago :::::: commit date: 5 days ago config: riscv-randconfig-c006-20210818 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=b0d4adaf3b3c4402d9c3b6186e02aa1e4f7985cd git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout b0d4adaf3b3c4402d9c3b6186e02aa1e4f7985cd # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot clang-analyzer warnings: (new ones prefixed by >>) ^ drivers/tty/serial/serial_core.c:2719:2: note: Returning from 'uart_get_info' uart_get_info(port, &tmp); ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/serial_core.c:2720:9: note: 3rd function call argument is an uninitialized value return sprintf(buf, "0x%lX\n", (unsigned long)tmp.iomem_base); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/serial_core.c:2730:9: warning: 3rd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] return sprintf(buf, "%d\n", tmp.iomem_reg_shift); ^ ~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/serial_core.c:2729:2: note: Calling 'uart_get_info' uart_get_info(port, &tmp); ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/serial_core.c:734:29: note: Left side of '&&' is false struct uart_state *state = container_of(port, struct uart_state, port); ^ include/linux/kernel.h:495:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/tty/serial/serial_core.c:734:29: note: Taking false branch struct uart_state *state = container_of(port, struct uart_state, port); ^ include/linux/kernel.h:495:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert' if (!(condition)) \ ^ drivers/tty/serial/serial_core.c:734:29: note: Loop condition is false. Exiting loop struct uart_state *state = container_of(port, struct uart_state, port); ^ include/linux/kernel.h:495:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert' do { \ ^ drivers/tty/serial/serial_core.c:744:6: note: Assuming 'uport' is null if (!uport) ^~~~~~ drivers/tty/serial/serial_core.c:744:2: note: Taking true branch if (!uport) ^ drivers/tty/serial/serial_core.c:745:3: note: Control jumps to line 768 goto out; ^ drivers/tty/serial/serial_core.c:769:2: note: Returning without writing to 'retinfo->iomem_reg_shift' return ret; ^ drivers/tty/serial/serial_core.c:2729:2: note: Returning from 'uart_get_info' uart_get_info(port, &tmp); ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/serial_core.c:2730:9: note: 3rd function call argument is an uninitialized value return sprintf(buf, "%d\n", tmp.iomem_reg_shift); ^ ~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. >> fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal). Optimal fields order: ts, name, time_offset, time, date, cs, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] struct fat_timestamp_testcase { ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ fs/fat/fat_test.c:23:8: note: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal). Optimal fields order: ts, name, time_offset, time, date, cs, consider reordering the fields or adding explicit padding members struct fat_timestamp_testcase { ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. fs/exfat/inode.c:148:3: warning: Value stored to 'clu_offset' is never read [clang-analyzer-deadcode.DeadStores] clu_offset -= fclus; ^ ~~~~~ fs/exfat/inode.c:148:3: note: Value stored to 'clu_offset' is never read clu_offset -= fclus; ^ ~~~~~ fs/exfat/inode.c:217:3: warning: Value stored to 'num_clusters' is never read [clang-analyzer-deadcode.DeadStores] num_clusters += num_to_be_allocated; ^ ~~~~~~~~~~~~~~~~~~~ fs/exfat/inode.c:217:3: note: Value stored to 'num_clusters' is never read num_clusters += num_to_be_allocated; ^ ~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. fs/exfat/dir.c:92:22: warning: The result of the right shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] clu_offset = dentry >> dentries_per_clu_bits; ^ fs/exfat/dir.c:232:2: note: Taking false branch if (!dir_emit_dots(filp, ctx)) ^ fs/exfat/dir.c:235:6: note: Assuming field 'pos' is equal to ITER_POS_FILLED_DOTS if (ctx->pos == ITER_POS_FILLED_DOTS) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/exfat/dir.c:235:2: note: Taking true branch if (ctx->pos == ITER_POS_FILLED_DOTS) { ^ fs/exfat/dir.c:240:2: note: Taking false branch if (cpos & (DENTRY_SIZE - 1)) { ^ fs/exfat/dir.c:247:6: note: 'err' is 0 if (err) ^~~ fs/exfat/dir.c:247:2: note: Taking false branch if (err) ^ fs/exfat/dir.c:250:6: note: Assuming field 'flags' is not equal to ALLOC_NO_FAT_CHAIN if (ei->flags == ALLOC_NO_FAT_CHAIN && cpos >= i_size_read(inode)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/exfat/dir.c:250:38: note: Left side of '&&' is false if (ei->flags == ALLOC_NO_FAT_CHAIN && cpos >= i_size_read(inode)) ^ fs/exfat/dir.c:253:8: note: Calling 'exfat_readdir' err = exfat_readdir(inode, &cpos, &de); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/exfat/dir.c:78:6: note: Assuming field 'type' is equal to TYPE_DIR if (ei->type != TYPE_DIR) ^~~~~~~~~~~~~~~~~~~~ fs/exfat/dir.c:78:2: note: Taking false branch if (ei->type != TYPE_DIR) ^ fs/exfat/dir.c:81:6: note: Assuming the condition is true if (ei->entry == -1) ^~~~~~~~~~~~~~~ fs/exfat/dir.c:81:2: note: Taking true branch if (ei->entry == -1) ^ fs/exfat/dir.c:88:26: note: '?' condition is false dentries_per_clu_bits = ilog2(dentries_per_clu); ^ include/linux/log2.h:158:2: note: expanded from macro 'ilog2' __builtin_constant_p(n) ? \ ^ fs/exfat/dir.c:88:26: note: '?' condition is true dentries_per_clu_bits = ilog2(dentries_per_clu); ^ include/linux/log2.h:161:2: note: expanded from macro 'ilog2' (sizeof(n) <= 4) ? \ ^ fs/exfat/dir.c:88:26: note: Calling '__ilog2_u32' dentries_per_clu_bits = ilog2(dentries_per_clu); ^ include/linux/log2.h:162:2: note: expanded from macro 'ilog2' __ilog2_u32(n) : \ ^~~~~~~~~~~~~~ include/linux/log2.h:24:2: note: Returning the value -1 return fls(n) - 1; ^~~~~~~~~~~~~~~~~ fs/exfat/dir.c:88:26: note: Returning from '__ilog2_u32' dentries_per_clu_bits = ilog2(dentries_per_clu); ^ vim +23 fs/fat/fat_test.c b0d4adaf3b3c44 David Gow 2021-04-15 22 b0d4adaf3b3c44 David Gow 2021-04-15 @23 struct fat_timestamp_testcase { b0d4adaf3b3c44 David Gow 2021-04-15 24 const char *name; b0d4adaf3b3c44 David Gow 2021-04-15 25 struct timespec64 ts; b0d4adaf3b3c44 David Gow 2021-04-15 26 __le16 time; b0d4adaf3b3c44 David Gow 2021-04-15 27 __le16 date; b0d4adaf3b3c44 David Gow 2021-04-15 28 u8 cs; b0d4adaf3b3c44 David Gow 2021-04-15 29 int time_offset; b0d4adaf3b3c44 David Gow 2021-04-15 30 }; b0d4adaf3b3c44 David Gow 2021-04-15 31 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org