CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Mugilraj Dhavachelvan <[email protected]>
CC: Jonathan Cameron <[email protected]>
CC: Andy Shevchenko <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   923dcc5eb0c111eccd51cc7ce1658537e3c38b25
commit: d03a74bfaccefcf271bf8e889c31229aa521cd66 iio: potentiometer: Add driver 
support for AD5110
date:   3 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 3 months ago
config: arm-randconfig-c002-20210928 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
dc6e8dfdfe7efecfda318d43a06fae18b40eb498)
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 arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d03a74bfaccefcf271bf8e889c31229aa521cd66
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d03a74bfaccefcf271bf8e889c31229aa521cd66
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
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 >>)
                   if (first_hole != blocks_per_page) {
                       ^~~~~~~~~~
   fs/ext4/readpage.c:339:3: note: Taking false branch
                   if (first_hole != blocks_per_page) {
                   ^
   fs/ext4/readpage.c:350:14: note: 'fully_mapped' is 1
                   } else if (fully_mapped) {
                              ^~~~~~~~~~~~
   fs/ext4/readpage.c:350:10: note: Taking true branch
                   } else if (fully_mapped) {
                          ^
   fs/ext4/readpage.c:353:7: note: 'fully_mapped' is 1
                   if (fully_mapped && blocks_per_page == 1 &&
                       ^~~~~~~~~~~~
   fs/ext4/readpage.c:353:7: note: Left side of '&&' is true
   fs/ext4/readpage.c:353:23: note: 'blocks_per_page' is not equal to 1
                   if (fully_mapped && blocks_per_page == 1 &&
                                       ^~~~~~~~~~~~~~~
   fs/ext4/readpage.c:353:44: note: Left side of '&&' is false
                   if (fully_mapped && blocks_per_page == 1 &&
                                                            ^
   fs/ext4/readpage.c:363:7: note: 'bio' is null
                   if (bio && (last_block_in_bio != blocks[0] - 1 ||
                       ^~~
   fs/ext4/readpage.c:363:11: note: Left side of '&&' is false
                   if (bio && (last_block_in_bio != blocks[0] - 1 ||
                           ^
   fs/ext4/readpage.c:369:7: note: 'bio' is equal to NULL
                   if (bio == NULL) {
                       ^~~
   fs/ext4/readpage.c:369:3: note: Taking true branch
                   if (bio == NULL) {
                   ^
   fs/ext4/readpage.c:378:4: note: Assuming 'bdev' is equal to field 'bi_bdev'
                           bio_set_dev(bio, bdev);
                           ^
   include/linux/bio.h:492:6: note: expanded from macro 'bio_set_dev'
           if ((bio)->bi_bdev != (bdev))                   \
               ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/readpage.c:378:4: note: Taking false branch
                           bio_set_dev(bio, bdev);
                           ^
   include/linux/bio.h:492:2: note: expanded from macro 'bio_set_dev'
           if ((bio)->bi_bdev != (bdev))                   \
           ^
   fs/ext4/readpage.c:378:4: note: Loop condition is false.  Exiting loop
                           bio_set_dev(bio, bdev);
                           ^
   include/linux/bio.h:489:36: note: expanded from macro 'bio_set_dev'
   #define bio_set_dev(bio, bdev)                          \
                                                           ^
   fs/ext4/readpage.c:379:39: note: The left operand of '<<' is a garbage value
                           bio->bi_iter.bi_sector = blocks[0] << (blkbits - 9);
                                                    ~~~~~~~~~ ^
   include/asm-generic/bitops/non-atomic.h:106:16: warning: Array access (from 
variable 'addr') results in a null pointer dereference 
[clang-analyzer-core.NullDereference]
           return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
                         ^
   fs/ext4/readpage.c:243:26: note: Assuming 'rac' is non-null
           unsigned int nr_pages = rac ? readahead_count(rac) : 1;
                                   ^~~
   fs/ext4/readpage.c:243:26: note: '?' condition is true
   fs/ext4/readpage.c:250:2: note: Loop condition is true.  Entering loop body
           for (; nr_pages; nr_pages--) {
           ^
   fs/ext4/readpage.c:254:7: note: 'rac' is non-null
                   if (rac) {
                       ^~~
   fs/ext4/readpage.c:254:3: note: Taking true branch
                   if (rac) {
                   ^
   fs/ext4/readpage.c:259:7: note: Calling 'PagePrivate'
                   if (page_has_buffers(page))
                       ^
   include/linux/buffer_head.h:146:32: note: expanded from macro 
'page_has_buffers'
   #define page_has_buffers(page)  PagePrivate(page)
                                   ^~~~~~~~~~~~~~~~~
   include/linux/page-flags.h:369:1: note: Passing null pointer value via 2nd 
parameter 'addr'
   PAGEFLAG(Private, private, PF_ANY)
   ^
   include/linux/page-flags.h:294:2: note: expanded from macro 'PAGEFLAG'
           TESTPAGEFLAG(uname, lname, policy)                              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/page-flags.h:267:32: note: expanded from macro 'TESTPAGEFLAG'
           { return test_bit(PG_##lname, &policy(page, 0)->flags); }
                                         ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/page-flags.h:369:1: note: Calling 'test_bit'
   PAGEFLAG(Private, private, PF_ANY)
   ^
   include/linux/page-flags.h:294:2: note: expanded from macro 'PAGEFLAG'
           TESTPAGEFLAG(uname, lname, policy)                              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/page-flags.h:267:11: note: expanded from macro 'TESTPAGEFLAG'
           { return test_bit(PG_##lname, &policy(page, 0)->flags); }
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/non-atomic.h:106:16: note: Array access (from 
variable 'addr') results in a null pointer dereference
           return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
                         ^~~~
   Suppressed 10 warnings (10 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.
   9 warnings generated.
>> drivers/iio/potentiometer/ad5110.c:59:8: warning: Excessive padding in 
>> 'struct ad5110_data' (59 padding bytes, where 27 is optimal). 
   Optimal fields order: 
   buf, 
   tol, 
   client, 
   cfg, 
   lock, 
   enable, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct ad5110_data {
   ~~~~~~~^~~~~~~~~~~~~
   drivers/iio/potentiometer/ad5110.c:59:8: note: Excessive padding in 'struct 
ad5110_data' (59 padding bytes, where 27 is optimal). Optimal fields order: 
buf, tol, client, cfg, lock, enable, consider reordering the fields or adding 
explicit padding members
   struct ad5110_data {
   ~~~~~~~^~~~~~~~~~~~~
   Suppressed 8 warnings (8 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   9 warnings generated.
   drivers/iio/pressure/dlhl60d.c:45:8: warning: Excessive padding in 'struct 
dlh_state' (52 padding bytes, where 20 is optimal). 
   Optimal fields order: 
   rx_buf, 
   use_interrupt, 
   client, 
   info, 
   completion, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct dlh_state {
   ~~~~~~~^~~~~~~~~~~
   drivers/iio/pressure/dlhl60d.c:45:8: note: Excessive padding in 'struct 
dlh_state' (52 padding bytes, where 20 is optimal). Optimal fields order: 
rx_buf, use_interrupt, client, info, completion, consider reordering the fields 
or adding explicit padding members
   struct dlh_state {
   ~~~~~~~^~~~~~~~~~~
   Suppressed 8 warnings (8 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   11 warnings generated.
   drivers/iio/pressure/icp10100.c:264:15: warning: 1st function call argument 
is an uninitialized value [clang-analyzer-core.CallAndMessage]
           *pressure = (be16_to_cpu(measures[0]) << 8) |
                        ^
   include/linux/byteorder/generic.h:97:21: note: expanded from macro 
'be16_to_cpu'
   #define be16_to_cpu __be16_to_cpu
                       ^
   include/uapi/linux/byteorder/little_endian.h:42:26: note: expanded from 
macro '__be16_to_cpu'
   #define __be16_to_cpu(x) __swab16((__force __u16)(__be16)(x))
                            ^
   include/uapi/linux/swab.h:102:28: note: expanded from macro '__swab16'
   #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
                              ^
   drivers/iio/pressure/icp10100.c:383:2: note: Control jumps to 'case 
IIO_CHAN_INFO_PROCESSED:'  at line 385
           switch (mask) {
           ^
   drivers/iio/pressure/icp10100.c:386:10: note: Calling 
'icp10100_read_raw_measures'
                   return icp10100_read_raw_measures(indio_dev, chan, val, 
val2);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/pressure/icp10100.c:347:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/pressure/icp10100.c:347:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/pressure/icp10100.c:350:8: note: Calling 'icp10100_get_measures'
           ret = icp10100_get_measures(st, &raw_pressure, &raw_temp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/pressure/icp10100.c:254:6: note: 'ret' is >= 0
           if (ret < 0)
               ^~~
   drivers/iio/pressure/icp10100.c:254:2: note: Taking false branch
           if (ret < 0)
           ^
   drivers/iio/pressure/icp10100.c:259:8: note: Calling 'icp10100_send_cmd'
           ret = icp10100_send_cmd(st, cmd, measures, sizeof(measures));
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/pressure/icp10100.c:145:6: note: Assuming the condition is false
           if (size > sizeof(data))
               ^~~~~~~~~~~~~~~~~~~
   drivers/iio/pressure/icp10100.c:145:2: note: Taking false branch
           if (size > sizeof(data))
           ^
   drivers/iio/pressure/icp10100.c:148:6: note: Assuming field 
'response_word_nb' is <= 0
           if (cmd->response_word_nb > 0 &&
               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/pressure/icp10100.c:148:32: note: Left side of '&&' is false
           if (cmd->response_word_nb > 0 &&
                                         ^
   drivers/iio/pressure/icp10100.c:152:2: note: Taking false branch
           dev_dbg(&st->client->dev, "sending cmd %#x\n", 
be16_to_cpu(cmd->cmd));
           ^
   include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
           dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/dynamic_debug.h:166:2: note: expanded from macro 
'dynamic_dev_dbg'
           _dynamic_func_call(fmt,__dynamic_dev_dbg,               \
           ^
   include/linux/dynamic_debug.h:152:2: note: expanded from macro 
'_dynamic_func_call'
           __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)

vim +59 drivers/iio/potentiometer/ad5110.c

d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  58  
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14 @59  struct ad5110_data {
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  60     struct i2c_client       
*client;
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  61     s16                     
tol;            /* resistor tolerance */
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  62     bool                    
enable;
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  63     struct mutex            
lock;
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  64     const struct ad5110_cfg 
*cfg;
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  65     /*
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  66      * DMA (thus cache 
coherency maintenance) requires the
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  67      * transfer buffers to 
live in their own cache lines.
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  68      */
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  69     u8                      
buf[2] ____cacheline_aligned;
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  70  };
d03a74bfaccefc Mugilraj Dhavachelvan 2021-08-14  71  

---
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