CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Kishon Vijay Abraham I <[email protected]>
CC: Vignesh Raghavendra <[email protected]>
CC: Lorenzo Pieralisi <[email protected]>
CC: Bjorn Helgaas <[email protected]>

tree:   git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-rt-linux-5.10.y
head:   716065a9435e7c06986b8497aa853a7b747a9570
commit: 5fe4c2dfaa4e6413f98aedd00c8b2b372e5b0103 [3870/9320] PCI: endpoint: Add 
support to associate secondary EPC with EPF
:::::: branch date: 2 days ago
:::::: commit date: 6 months ago
config: riscv-randconfig-c006-20210916 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
c8b3d7d6d6de37af68b2f379d0e37304f78e115f)
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
        git remote add ti git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
        git fetch --no-tags ti ti-rt-linux-5.10.y
        git checkout 5fe4c2dfaa4e6413f98aedd00c8b2b372e5b0103
        # 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 >>)
           a = b = c = d = e = f = g = h = ss1 = ss2 = tt1 = tt2 = 0;
                                                       ^     ~~~~~~~
   crypto/sm3_generic.c:121:46: note: Although the value stored to 'tt1' is 
used in the enclosing expression, the value is never actually read from 'tt1'
           a = b = c = d = e = f = g = h = ss1 = ss2 = tt1 = tt2 = 0;
                                                       ^     ~~~~~~~
   crypto/sm3_generic.c:121:52: warning: Although the value stored to 'tt2' is 
used in the enclosing expression, the value is never actually read from 'tt2' 
[clang-analyzer-deadcode.DeadStores]
           a = b = c = d = e = f = g = h = ss1 = ss2 = tt1 = tt2 = 0;
                                                             ^     ~
   crypto/sm3_generic.c:121:52: note: Although the value stored to 'tt2' is 
used in the enclosing expression, the value is never actually read from 'tt2'
           a = b = c = d = e = f = g = h = ss1 = ss2 = tt1 = tt2 = 0;
                                                             ^     ~
   Suppressed 5 warnings (5 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.
   include/linux/fsnotify_backend.h:262:18: warning: Access to field 'dentry' 
results in a dereference of a null pointer (loaded from variable 'data') 
[clang-analyzer-core.NullDereference]
                   return d_inode(((const struct path *)data)->dentry);
                                  ^
   fs/notify/fsnotify.c:184:22: note: Assuming 'path' is null
           struct mount *mnt = path ? real_mount(path->mnt) : NULL;
                               ^~~~
   fs/notify/fsnotify.c:184:22: note: '?' condition is false
   fs/notify/fsnotify.c:199:6: note: Assuming field 'i_fsnotify_marks' is 
non-null
           if (!inode->i_fsnotify_marks && !inode->i_sb->s_fsnotify_marks &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:199:31: note: Left side of '&&' is false
           if (!inode->i_fsnotify_marks && !inode->i_sb->s_fsnotify_marks &&
                                        ^
   fs/notify/fsnotify.c:204:18: note: Calling 'fsnotify_event_needs_parent'
           parent_needed = fsnotify_event_needs_parent(inode, mnt, mask);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:152:6: note: Assuming the condition is true
           if (mask & FS_ISDIR)
               ^~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:152:2: note: Taking true branch
           if (mask & FS_ISDIR)
           ^
   fs/notify/fsnotify.c:153:3: note: Returning zero, which participates in a 
condition later
                   return false;
                   ^~~~~~~~~~~~
   fs/notify/fsnotify.c:204:18: note: Returning from 
'fsnotify_event_needs_parent'
           parent_needed = fsnotify_event_needs_parent(inode, mnt, mask);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:205:6: note: Assuming 'parent_watched' is true
           if (!parent_watched && !parent_needed)
               ^~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:205:22: note: Left side of '&&' is false
           if (!parent_watched && !parent_needed)
                               ^
   fs/notify/fsnotify.c:212:15: note: 'parent_watched' is true
           if (unlikely(parent_watched && !p_mask))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   fs/notify/fsnotify.c:212:15: note: Left side of '&&' is true
           if (unlikely(parent_watched && !p_mask))
                        ^
   fs/notify/fsnotify.c:212:33: note: Assuming 'p_mask' is not equal to 0
           if (unlikely(parent_watched && !p_mask))
                                          ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   fs/notify/fsnotify.c:212:2: note: Taking false branch
           if (unlikely(parent_watched && !p_mask))
           ^
   fs/notify/fsnotify.c:220:6: note: 'parent_needed' is false
           if (parent_needed || parent_interested) {
               ^~~~~~~~~~~~~
   fs/notify/fsnotify.c:220:6: note: Left side of '||' is false
   fs/notify/fsnotify.c:220:23: note: Assuming 'parent_interested' is true
           if (parent_needed || parent_interested) {
                                ^~~~~~~~~~~~~~~~~
   fs/notify/fsnotify.c:220:2: note: Taking true branch
           if (parent_needed || parent_interested) {
           ^
   fs/notify/fsnotify.c:222:45: note: Passing null pointer value via 1st 
parameter 'data'
                   WARN_ON_ONCE(inode != fsnotify_data_inode(data, data_type));
                                                             ^
   include/asm-generic/bug.h:102:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   fs/notify/fsnotify.c:222:25: note: Calling 'fsnotify_data_inode'
                   WARN_ON_ONCE(inode != fsnotify_data_inode(data, data_type));
                                         ^
   include/asm-generic/bug.h:102:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   include/linux/fsnotify_backend.h:258:2: note: Control jumps to 'case 
FSNOTIFY_EVENT_PATH:'  at line 261
           switch (data_type) {
           ^
   include/linux/fsnotify_backend.h:262:18: note: Access to field 'dentry' 
results in a dereference of a null pointer (loaded from variable 'data')
                   return d_inode(((const struct path *)data)->dentry);
                                  ^                     ~~~~
   Suppressed 5 warnings (5 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.
   12 warnings generated.
   Suppressed 12 warnings (5 in non-user code, 7 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   14 warnings generated.
>> drivers/pci/endpoint/pci-epf-core.c:84:17: warning: Value stored to 'dev' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = epf->epc->dev.parent;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/pci/endpoint/pci-epf-core.c:84:17: note: Value stored to 'dev' 
during its initialization is never read
           struct device *dev = epf->epc->dev.parent;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   include/linux/log2.h:57:13: warning: The result of the left shift is 
undefined due to shifting by '64', which is greater or equal to the width of 
type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
           return 1UL << fls_long(n - 1);
                      ^
   drivers/pci/endpoint/pci-epf-core.c:130:6: note: Assuming 'size' is >= 128
           if (size < 128)
               ^~~~~~~~~~
   drivers/pci/endpoint/pci-epf-core.c:130:2: note: Taking false branch
           if (size < 128)
           ^
   drivers/pci/endpoint/pci-epf-core.c:133:6: note: Assuming 'align' is 0
           if (align)
               ^~~~~
   drivers/pci/endpoint/pci-epf-core.c:133:2: note: Taking false branch
           if (align)
           ^
   drivers/pci/endpoint/pci-epf-core.c:136:10: note: '?' condition is false
                   size = roundup_pow_of_two(size);
                          ^
   include/linux/log2.h:175:2: note: expanded from macro 'roundup_pow_of_two'
           __builtin_constant_p(n) ? (             \
           ^
   drivers/pci/endpoint/pci-epf-core.c:136:10: note: Calling 
'__roundup_pow_of_two'
                   size = roundup_pow_of_two(size);
                          ^
   include/linux/log2.h:179:2: note: expanded from macro 'roundup_pow_of_two'
           __roundup_pow_of_two(n)                 \
           ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/log2.h:57:16: note: Calling 'fls_long'
           return 1UL << fls_long(n - 1);
                         ^~~~~~~~~~~~~~~
   include/linux/bitops.h:184:2: note: Taking false branch
           if (sizeof(l) == 4)
           ^
   include/linux/bitops.h:186:9: note: Calling 'fls64'
           return fls64(l);
                  ^~~~~~~~
   include/asm-generic/bitops/fls64.h:29:6: note: 'x' is not equal to 0
           if (x == 0)
               ^
   include/asm-generic/bitops/fls64.h:29:2: note: Taking false branch
           if (x == 0)
           ^
   include/asm-generic/bitops/fls64.h:31:2: note: Returning the value 64
           return __fls(x) + 1;
           ^~~~~~~~~~~~~~~~~~~
   include/linux/bitops.h:186:9: note: Returning from 'fls64'
           return fls64(l);
                  ^~~~~~~~
   include/linux/bitops.h:186:2: note: Returning the value 64
           return fls64(l);
           ^~~~~~~~~~~~~~~
   include/linux/log2.h:57:16: note: Returning from 'fls_long'
           return 1UL << fls_long(n - 1);
                         ^~~~~~~~~~~~~~~
   include/linux/log2.h:57:13: note: The result of the left shift is undefined 
due to shifting by '64', which is greater or equal to the width of type 
'unsigned long'
           return 1UL << fls_long(n - 1);
                      ^  ~~~~~~~~~~~~~~~
   Suppressed 12 warnings (5 in non-user code, 7 with check filters).
   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/kernfs/symlink.c:77:3: warning: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                   strcpy(s, "../");
                   ^~~~~~
   fs/kernfs/symlink.c:77:3: note: Call to function 'strcpy' is insecure as it 
does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
                   strcpy(s, "../");
                   ^~~~~~
   Suppressed 5 warnings (5 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/sysfs/file.c:54:2: warning: Null pointer passed as 1st argument to memory 
set function [clang-analyzer-unix.cstring.NullArg]
           memset(buf, 0, PAGE_SIZE);
           ^      ~~~
   fs/sysfs/file.c:49:10: note: Calling 'seq_get_buf'
           count = seq_get_buf(sf, &buf);
                   ^~~~~~~~~~~~~~~~~~~~~
   include/linux/seq_file.h:65:9: note: Assuming field 'count' is <= field 
'size'
           BUG_ON(m->count > m->size);
                  ^
   include/asm-generic/bug.h:63:45: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                               ^~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/seq_file.h:65:2: note: Taking false branch
           BUG_ON(m->count > m->size);
           ^
   include/asm-generic/bug.h:63:32: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                  ^
   include/linux/seq_file.h:65:2: note: Loop condition is false.  Exiting loop
           BUG_ON(m->count > m->size);
           ^
   include/asm-generic/bug.h:63:27: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)

vim +/dev +84 drivers/pci/endpoint/pci-epf-core.c

5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   71  
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   72  /**
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   73   * pci_epf_free_space() 
- free the allocated PCI EPF register space
9b41d19aff4090 Krzysztof Kozlowski    2020-07-29   74   * @epf: the EPF device 
from whom to free the memory
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   75   * @addr: the virtual 
address of the PCI EPF register space
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   76   * @bar: the BAR number 
corresponding to the register space
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   77   * @type: Identifies if 
the allocated space is for primary EPC or secondary EPC
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   78   *
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   79   * Invoke to free the 
allocated PCI EPF register space.
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   80   */
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   81  void 
pci_epf_free_space(struct pci_epf *epf, void *addr, enum pci_barno bar,
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   82                   enum 
pci_epc_interface_type type)
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   83  {
b330104fa76df3 Kishon Vijay Abraham I 2018-01-11  @84   struct device *dev = 
epf->epc->dev.parent;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   85   struct pci_epf_bar 
*epf_bar;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   86   struct pci_epc *epc;
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   87  
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   88   if (!addr)
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   89           return;
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10   90  
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   91   if (type == 
PRIMARY_INTERFACE) {
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   92           epc = epf->epc;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   93           epf_bar = 
epf->bar;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   94   } else {
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   95           epc = 
epf->sec_epc;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   96           epf_bar = 
epf->sec_epc_bar;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   97   }
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   98  
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19   99   dev = epc->dev.parent;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  100   dma_free_coherent(dev, 
epf_bar[bar].size, addr,
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  101                     
epf_bar[bar].phys_addr);
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10  102  
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  103   epf_bar[bar].phys_addr 
= 0;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  104   epf_bar[bar].addr = 
NULL;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  105   epf_bar[bar].size = 0;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  106   epf_bar[bar].barno = 0;
5fe4c2dfaa4e64 Kishon Vijay Abraham I 2021-03-19  107   epf_bar[bar].flags = 0;
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10  108  }
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10  109  
EXPORT_SYMBOL_GPL(pci_epf_free_space);
5e8cb4033807e3 Kishon Vijay Abraham I 2017-04-10  110  

:::::: The code at line 84 was first introduced by commit
:::::: b330104fa76df3eae6e199a23791fed5d35f06b4 PCI: endpoint: Use EPC's device 
in dma_alloc_coherent()/dma_free_coherent()

:::::: TO: Kishon Vijay Abraham I <[email protected]>
:::::: CC: Lorenzo Pieralisi <[email protected]>

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