CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Rasmus Villemoes <[email protected]>
CC: Miguel Ojeda <[email protected]>
CC: Nick Desaulniers <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   12119cfa1052d512a92524e90ebee85029a918f8
commit: e1edc277e6f6dfb372216522dfc57f9381c39e35 linux/container_of.h: switch 
to static_assert
date:   4 weeks ago
:::::: branch date: 23 hours ago
:::::: commit date: 4 weeks ago
config: riscv-randconfig-c006-20211128 
(https://download.01.org/0day-ci/archive/20211205/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
4b553297ef3ee4dc2119d5429adf3072e90fac38)
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/torvalds/linux.git/commit/?id=e1edc277e6f6dfb372216522dfc57f9381c39e35
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e1edc277e6f6dfb372216522dfc57f9381c39e35
        # save the config file 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/pci/setup-bus.c:1923:2: note: Calling 'adjust_bridge_window'
           adjust_bridge_window(bridge, io_res, add_list, resource_size(&io));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1867:6: note: Assuming field 'parent' is null
           if (res->parent)
               ^~~~~~~~~~~
   drivers/pci/setup-bus.c:1867:2: note: Taking false branch
           if (res->parent)
           ^
   drivers/pci/setup-bus.c:1870:6: note: Assuming 'new_size' is not equal to 0
           if (!new_size)
               ^~~~~~~~~
   drivers/pci/setup-bus.c:1870:2: note: Taking false branch
           if (!new_size)
           ^
   drivers/pci/setup-bus.c:1873:6: note: Assuming 'new_size' is <= 'size'
           if (new_size > size) {
               ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1873:2: note: Taking false branch
           if (new_size > size) {
           ^
   drivers/pci/setup-bus.c:1877:13: note: Assuming 'new_size' is >= 'size'
           } else if (new_size < size) {
                      ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1877:9: note: Taking false branch
           } else if (new_size < size) {
                  ^
   drivers/pci/setup-bus.c:1884:2: note: Calling 'remove_from_list'
           remove_from_list(add_list, res);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:87:2: note: Loop condition is true.  Entering loop 
body
           list_for_each_entry_safe(dev_res, tmp, head, list) {
           ^
   include/linux/list.h:717:2: note: expanded from macro 
'list_for_each_entry_safe'
           for (pos = list_first_entry(head, typeof(*pos), member),        \
           ^
   drivers/pci/setup-bus.c:88:7: note: Assuming 'res' is equal to field 'res'
                   if (dev_res->res == res) {
                       ^~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:88:3: note: Taking true branch
                   if (dev_res->res == res) {
                   ^
   drivers/pci/setup-bus.c:90:4: note: Memory is released
                           kfree(dev_res);
                           ^~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:91:4: note:  Execution continues on line 90
                           break;
                           ^
   drivers/pci/setup-bus.c:1884:2: note: Returning; memory was released
           remove_from_list(add_list, res);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1923:2: note: Returning; memory was released
           adjust_bridge_window(bridge, io_res, add_list, resource_size(&io));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1924:2: note: Calling 'adjust_bridge_window'
           adjust_bridge_window(bridge, mmio_res, add_list, 
resource_size(&mmio));
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1867:6: note: Assuming field 'parent' is null
           if (res->parent)
               ^~~~~~~~~~~
   drivers/pci/setup-bus.c:1867:2: note: Taking false branch
           if (res->parent)
           ^
   drivers/pci/setup-bus.c:1870:6: note: Assuming 'new_size' is not equal to 0
           if (!new_size)
               ^~~~~~~~~
   drivers/pci/setup-bus.c:1870:2: note: Taking false branch
           if (!new_size)
           ^
   drivers/pci/setup-bus.c:1873:6: note: Assuming 'new_size' is <= 'size'
           if (new_size > size) {
               ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1873:2: note: Taking false branch
           if (new_size > size) {
           ^
   drivers/pci/setup-bus.c:1877:13: note: Assuming 'new_size' is >= 'size'
           } else if (new_size < size) {
                      ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1877:9: note: Taking false branch
           } else if (new_size < size) {
                  ^
   drivers/pci/setup-bus.c:1884:2: note: Calling 'remove_from_list'
           remove_from_list(add_list, res);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:87:2: note: Use of memory after it is freed
           list_for_each_entry_safe(dev_res, tmp, head, list) {
           ^
   include/linux/list.h:718:7: note: expanded from macro 
'list_for_each_entry_safe'
                   n = list_next_entry(pos, member);                       \
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:557:2: note: expanded from macro 'list_next_entry'
           list_entry((pos)->member.next, typeof(*(pos)), member)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:513:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/container_of.h:18:25: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                  ^~~~~
>> include/linux/math64.h:92:15: warning: The result of the '>>' expression is 
>> undefined [clang-analyzer-core.UndefinedBinaryOperatorResult]
           *remainder = do_div(dividend, divisor);
                        ^
   include/asm-generic/div64.h:234:25: note: expanded from macro 'do_div'
           } else if (likely(((n) >> 32) == 0)) {          \
                                  ^
   drivers/pci/setup-bus.c:2069:2: note: Calling 
'pci_bridge_distribute_available_resources'
           pci_bridge_distribute_available_resources(bridge, &add_list);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:2036:6: note: Assuming field 'is_hotplug_bridge' is 
not equal to 0
           if (!bridge->is_hotplug_bridge)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:2036:2: note: Taking false branch
           if (!bridge->is_hotplug_bridge)
           ^
   drivers/pci/setup-bus.c:2044:2: note: Calling 
'pci_bus_distribute_available_resources'
           pci_bus_distribute_available_resources(bridge->subordinate,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1907:6: note: Assuming field 'parent' is non-null
           if (!io_res->parent && align)
               ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1907:22: note: Left side of '&&' is false
           if (!io_res->parent && align)
                               ^
   drivers/pci/setup-bus.c:1911:6: note: Assuming field 'parent' is non-null
           if (!mmio_res->parent && align)
               ^~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1911:24: note: Left side of '&&' is false
           if (!mmio_res->parent && align)
                                 ^
   drivers/pci/setup-bus.c:1915:6: note: Assuming field 'parent' is non-null
           if (!mmio_pref_res->parent && align)
               ^~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1915:29: note: Left side of '&&' is false
           if (!mmio_pref_res->parent && align)
                                      ^
   drivers/pci/setup-bus.c:1933:2: note: Loop condition is true.  Entering loop 
body
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:693:2: note: expanded from macro 'for_each_pci_bridge'
           list_for_each_entry(dev, &bus->devices, bus_list)       \
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/setup-bus.c:1933:2: note: Taking false branch
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:694:3: note: expanded from macro 'for_each_pci_bridge'
                   if (!pci_is_bridge(dev)) {} else
                   ^
   drivers/pci/setup-bus.c:1934:7: note: Assuming field 'is_hotplug_bridge' is 0
                   if (dev->is_hotplug_bridge)
                       ^~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1934:3: note: Taking false branch
                   if (dev->is_hotplug_bridge)
                   ^
   drivers/pci/setup-bus.c:1933:2: note: Loop condition is true.  Entering loop 
body
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:693:2: note: expanded from macro 'for_each_pci_bridge'
           list_for_each_entry(dev, &bus->devices, bus_list)       \
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/setup-bus.c:1933:2: note: Taking false branch
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:694:3: note: expanded from macro 'for_each_pci_bridge'
                   if (!pci_is_bridge(dev)) {} else
                   ^
   drivers/pci/setup-bus.c:1934:7: note: Assuming field 'is_hotplug_bridge' is 
not equal to 0
                   if (dev->is_hotplug_bridge)
                       ^~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1934:3: note: Taking true branch
                   if (dev->is_hotplug_bridge)
                   ^
   drivers/pci/setup-bus.c:1933:2: note: Loop condition is false. Execution 
continues on line 1945
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:693:2: note: expanded from macro 'for_each_pci_bridge'
           list_for_each_entry(dev, &bus->devices, bus_list)       \
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/setup-bus.c:1945:2: note: Taking false branch
           if (hotplug_bridges + normal_bridges == 1) {
           ^
   drivers/pci/setup-bus.c:1953:6: note: 'hotplug_bridges' is not equal to 0
           if (hotplug_bridges == 0)
               ^~~~~~~~~~~~~~~
   drivers/pci/setup-bus.c:1953:2: note: Taking false branch
           if (hotplug_bridges == 0)
           ^
   drivers/pci/setup-bus.c:1962:2: note: Loop condition is false. Execution 
continues on line 1997
           for_each_pci_bridge(dev, bus) {
           ^
   include/linux/pci.h:693:2: note: expanded from macro 'for_each_pci_bridge'
           list_for_each_entry(dev, &bus->devices, bus_list)       \

vim +92 include/linux/math64.h

f910381a55cdaa Sasha Levin  2012-03-15  88  
2418f4f28f8467 Roman Zippel 2008-05-01  89  #ifndef div_u64_rem
2418f4f28f8467 Roman Zippel 2008-05-01  90  static inline u64 div_u64_rem(u64 
dividend, u32 divisor, u32 *remainder)
2418f4f28f8467 Roman Zippel 2008-05-01  91  {
2418f4f28f8467 Roman Zippel 2008-05-01 @92      *remainder = do_div(dividend, 
divisor);
2418f4f28f8467 Roman Zippel 2008-05-01  93      return dividend;
2418f4f28f8467 Roman Zippel 2008-05-01  94  }
2418f4f28f8467 Roman Zippel 2008-05-01  95  #endif
2418f4f28f8467 Roman Zippel 2008-05-01  96  

:::::: The code at line 92 was first introduced by commit
:::::: 2418f4f28f8467b92a6177af32d05737ebf6206c introduce explicit 
signed/unsigned 64bit divide

:::::: TO: Roman Zippel <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

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

Reply via email to