All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 7181/8804] fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal).
@ 2021-08-19  2:49 kernel test robot
  2021-08-19  8:48   ` kernel test robot
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2021-08-19  2:49 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 14002 bytes --]

CC: clang-built-linux(a)googlegroups.com
CC: kbuild-all(a)lists.01.org
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: David Gow <davidgow@google.com>
CC: Shuah Khan <skhan@linuxfoundation.org>
CC: Brendan Higgins <brendanhiggins@google.com>

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 <lkp@intel.com>


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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32301 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [kbuild-all] [linux-next:master 7181/8804] fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal).
  2021-08-19  2:49 [linux-next:master 7181/8804] fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal) kernel test robot
@ 2021-08-19  8:48   ` kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-08-19  8:48 UTC (permalink / raw)
  To: David Gow
  Cc: clang-built-linux, kbuild-all, Linux Memory Management List,
	Shuah Khan, Brendan Higgins

[-- Attachment #1: Type: text/plain, Size: 13668 bytes --]

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 <lkp@intel.com>


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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32301 bytes --]

[-- Attachment #3: Attached Message Part --]
[-- Type: text/plain, Size: 154 bytes --]

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [linux-next:master 7181/8804] fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal).
@ 2021-08-19  8:48   ` kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-08-19  8:48 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 13971 bytes --]

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 <lkp@intel.com>


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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32301 bytes --]

[-- Attachment #3: AttachedMessagePart.ksh --]
[-- Type: text/plain, Size: 154 bytes --]

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-08-19  8:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19  2:49 [linux-next:master 7181/8804] fs/fat/fat_test.c:23:8: warning: Excessive padding in 'struct fat_timestamp_testcase' (11 padding bytes, where 3 is optimal) kernel test robot
2021-08-19  8:48 ` [kbuild-all] " kernel test robot
2021-08-19  8:48   ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.