CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Sudeep Holla <[email protected]>
CC: Jassi Brar <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   5191290407668028179f2544a11ae9b57f0bcf07
commit: 45ec2dafb1775f7d806fbd2387e3f2cc2f56142d mailbox: pcc: Drop handling 
invalid bit-width in {read,write}_register
date:   5 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 5 months ago
config: x86_64-randconfig-c007-20220321 
(https://download.01.org/0day-ci/archive/20220323/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
85e9b2687a13d1908aa86d1b89c5ce398a06cd39)
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
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=45ec2dafb1775f7d806fbd2387e3f2cc2f56142d
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 45ec2dafb1775f7d806fbd2387e3f2cc2f56142d
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
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 >>)
               ^~~~~~
   net/9p/trans_virtio.c:408:2: note: Taking false branch
           if (uodata) {
           ^
   net/9p/trans_virtio.c:428:13: note: Assuming 'uidata' is non-null
           } else if (uidata) {
                      ^~~~~~
   net/9p/trans_virtio.c:428:9: note: Taking true branch
           } else if (uidata) {
                  ^
   net/9p/trans_virtio.c:429:11: note: Calling 'p9_get_mapped_pages'
                   int n = p9_get_mapped_pages(chan, &in_pages, uidata,
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/9p/trans_virtio.c:319:6: note: Assuming the condition is true
           if (!iov_iter_count(data))
               ^~~~~~~~~~~~~~~~~~~~~
   net/9p/trans_virtio.c:319:2: note: Taking true branch
           if (!iov_iter_count(data))
           ^
   net/9p/trans_virtio.c:320:3: note: Returning without writing to '*offs'
                   return 0;
                   ^
   net/9p/trans_virtio.c:429:11: note: Returning from 'p9_get_mapped_pages'
                   int n = p9_get_mapped_pages(chan, &in_pages, uidata,
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/9p/trans_virtio.c:431:7: note: 'n' is >= 0
                   if (n < 0) {
                       ^
   net/9p/trans_virtio.c:431:3: note: Taking false branch
                   if (n < 0) {
                   ^
   net/9p/trans_virtio.c:435:32: note: The right operand of '+' is a garbage 
value
                   in_nr_pages = DIV_ROUND_UP(n + offs, PAGE_SIZE);
                                                ^
   include/linux/math.h:36:22: note: expanded from macro 'DIV_ROUND_UP'
   #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
                        ^
   include/uapi/linux/const.h:34:40: note: expanded from macro 
'__KERNEL_DIV_ROUND_UP'
   #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
                                          ^
   net/9p/trans_virtio.c:475:3: warning: Value stored to 'in' is never read 
[clang-analyzer-deadcode.DeadStores]
                   in += pack_sg_list_p(chan->sg, out + in, VIRTQUEUE_NUM,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/9p/trans_virtio.c:475:3: note: Value stored to 'in' is never read
                   in += pack_sg_list_p(chan->sg, out + in, VIRTQUEUE_NUM,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   drivers/media/dvb-frontends/ds3000.c:588:4: warning: Value stored to 
'snr_value' is never read [clang-analyzer-deadcode.DeadStores]
                           snr_value = 0x0013;
                           ^           ~~~~~~
   drivers/media/dvb-frontends/ds3000.c:588:4: note: Value stored to 
'snr_value' is never read
                           snr_value = 0x0013;
                           ^           ~~~~~~
   drivers/media/dvb-frontends/ds3000.c:720:28: warning: The result of the left 
shift is undefined because the left operand is negative 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           data |= ((d->msg_len - 1) << 3) | 0x07;
                    ~~~~~~~~~~~~~~~~ ^
   drivers/media/dvb-frontends/ds3000.c:698:2: note: Assuming 'debug' is 0
           dprintk("%s(", __func__);
           ^
   drivers/media/dvb-frontends/ds3000.c:25:7: note: expanded from macro 
'dprintk'
                   if (debug) \
                       ^~~~~
   drivers/media/dvb-frontends/ds3000.c:698:2: note: Taking false branch
           dprintk("%s(", __func__);
           ^
   drivers/media/dvb-frontends/ds3000.c:25:3: note: expanded from macro 
'dprintk'
                   if (debug) \
                   ^
   drivers/media/dvb-frontends/ds3000.c:698:2: note: Loop condition is false.  
Exiting loop
           dprintk("%s(", __func__);
           ^
   drivers/media/dvb-frontends/ds3000.c:24:2: note: expanded from macro 
'dprintk'
           do { \
           ^
   drivers/media/dvb-frontends/ds3000.c:699:15: note: Assuming 'i' is >= field 
'msg_len'
           for (i = 0 ; i < d->msg_len;) {
                        ^~~~~~~~~~~~~~
   drivers/media/dvb-frontends/ds3000.c:699:2: note: Loop condition is false. 
Execution continues on line 706
           for (i = 0 ; i < d->msg_len;) {
           ^
   drivers/media/dvb-frontends/ds3000.c:711:2: note: Loop condition is false. 
Execution continues on line 714
           for (i = 0; i < d->msg_len; i++)
           ^
   drivers/media/dvb-frontends/ds3000.c:720:28: note: The result of the left 
shift is undefined because the left operand is negative
           data |= ((d->msg_len - 1) << 3) | 0x07;
                    ~~~~~~~~~~~~~~~~ ^
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/media/dvb-frontends/mb86a16.c:1151:3: warning: Value stored to 'j' 
is never read [clang-analyzer-deadcode.DeadStores]
                   j = 0;
                   ^   ~
   drivers/media/dvb-frontends/mb86a16.c:1151:3: note: Value stored to 'j' is 
never read
                   j = 0;
                   ^   ~
   Suppressed 2 warnings (2 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.
>> drivers/mailbox/pcc.c:190:6: warning: The left expression of the compound 
>> assignment is an uninitialized value. The computed value will also be 
>> garbage [clang-analyzer-core.uninitialized.Assign]
           val &= reg->preserve_mask;
               ^
   drivers/mailbox/pcc.c:345:9: note: Calling 'pcc_chan_reg_read_modify_write'
           return pcc_chan_reg_read_modify_write(&pchan->db);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/pcc.c:184:2: note: 'val' declared without an initial value
           u64 val;
           ^~~~~~~
   drivers/mailbox/pcc.c:186:8: note: Calling 'pcc_chan_reg_read'
           ret = pcc_chan_reg_read(reg, &val);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/pcc.c:153:6: note: Assuming field 'gas' is non-null, which 
participates in a condition later
           if (!reg->gas) {
               ^~~~~~~~~
   drivers/mailbox/pcc.c:153:2: note: Taking false branch
           if (!reg->gas) {
           ^
   drivers/mailbox/pcc.c:158:6: note: Assuming field 'vaddr' is non-null
           if (reg->vaddr)
               ^~~~~~~~~~
   drivers/mailbox/pcc.c:158:2: note: Taking true branch
           if (reg->vaddr)
           ^
   drivers/mailbox/pcc.c:159:3: note: Calling 'read_register'
                   read_register(reg->vaddr, val, reg->gas->bit_width);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/pcc.c:115:2: note: 'Default' branch taken. Execution 
continues on line 115
           switch (bit_width) {
           ^
   drivers/mailbox/pcc.c:129:1: note: Returning without writing to '*val'
   }
   ^
   drivers/mailbox/pcc.c:159:3: note: Returning from 'read_register'
                   read_register(reg->vaddr, val, reg->gas->bit_width);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/pcc.c:163:2: note: Returning without writing to '*val'
           return ret;
           ^
   drivers/mailbox/pcc.c:163:2: note: Returning zero (loaded from 'ret'), which 
participates in a condition later
           return ret;
           ^~~~~~~~~~
   drivers/mailbox/pcc.c:186:8: note: Returning from 'pcc_chan_reg_read'
           ret = pcc_chan_reg_read(reg, &val);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/pcc.c:187:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/mailbox/pcc.c:187:2: note: Taking false branch
           if (ret)
           ^
   drivers/mailbox/pcc.c:190:6: note: The left expression of the compound 
assignment is an uninitialized value. The computed value will also be garbage
           val &= reg->preserve_mask;
           ~~~ ^
   Suppressed 3 warnings (3 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   net/ipv4/arp.c:603:2: warning: Null pointer passed as 2nd argument to memory 
copy function [clang-analyzer-unix.cstring.NullArg]
           memcpy(arp_ptr, src_hw, dev->addr_len);
           ^
   net/ipv4/arp.c:680:29: note: Calling '__in_dev_get_rcu'
           struct in_device *in_dev = __in_dev_get_rcu(dev);
                                      ^~~~~~~~~~~~~~~~~~~~~
   include/linux/inetdevice.h:228:9: note: Left side of '||' is false
           return rcu_dereference(dev->ip_ptr);
                  ^
   include/linux/rcupdate.h:596:28: note: expanded from macro 'rcu_dereference'
   #define rcu_dereference(p) rcu_dereference_check(p, 0)
                              ^
   include/linux/rcupdate.h:528:2: note: expanded from macro 
'rcu_dereference_check'
           __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
           ^
   include/linux/rcupdate.h:389:48: note: expanded from macro 
'__rcu_dereference_check'
           typeof(*p) *________p1 = (typeof(*p) *__force)READ_ONCE(p); \
                                                         ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:290:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/inetdevice.h:228:9: note: Left side of '||' is false
           return rcu_dereference(dev->ip_ptr);
                  ^
   include/linux/rcupdate.h:596:28: note: expanded from macro 'rcu_dereference'
   #define rcu_dereference(p) rcu_dereference_check(p, 0)

vim +190 drivers/mailbox/pcc.c

800cda7b63f22b Sudeep Holla 2021-09-17  180  
800cda7b63f22b Sudeep Holla 2021-09-17  181  static int 
pcc_chan_reg_read_modify_write(struct pcc_chan_reg *reg)
800cda7b63f22b Sudeep Holla 2021-09-17  182  {
800cda7b63f22b Sudeep Holla 2021-09-17  183     int ret = 0;
800cda7b63f22b Sudeep Holla 2021-09-17  184     u64 val;
800cda7b63f22b Sudeep Holla 2021-09-17  185  
800cda7b63f22b Sudeep Holla 2021-09-17  186     ret = pcc_chan_reg_read(reg, 
&val);
800cda7b63f22b Sudeep Holla 2021-09-17  187     if (ret)
800cda7b63f22b Sudeep Holla 2021-09-17  188             return ret;
800cda7b63f22b Sudeep Holla 2021-09-17  189  
800cda7b63f22b Sudeep Holla 2021-09-17 @190     val &= reg->preserve_mask;
800cda7b63f22b Sudeep Holla 2021-09-17  191     val |= reg->set_mask;
800cda7b63f22b Sudeep Holla 2021-09-17  192  
800cda7b63f22b Sudeep Holla 2021-09-17  193     return pcc_chan_reg_write(reg, 
val);
800cda7b63f22b Sudeep Holla 2021-09-17  194  }
800cda7b63f22b Sudeep Holla 2021-09-17  195  

:::::: The code at line 190 was first introduced by commit
:::::: 800cda7b63f22be62e67142f1202d2ead2dff2e8 mailbox: pcc: Add PCC register 
bundle and associated accessor functions

:::::: TO: Sudeep Holla <[email protected]>
:::::: CC: Jassi Brar <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to