CC: [email protected]
CC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: David Gow <[email protected]>
CC: Shuah Khan <[email protected]>
CC: Brendan Higgins <[email protected]>

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 <[email protected]>


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/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to