CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Xie Yongji <[email protected]>
CC: "Michael S. Tsirkin" <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   58e1100fdc5990b0cc0d4beaf2562a92e621ac7d
commit: c8a6153b6c59d95c0e091f053f6f180952ade91e vduse: Introduce VDUSE - vDPA 
Device in Userspace
date:   3 months ago
:::::: branch date: 24 hours ago
:::::: commit date: 3 months ago
config: arm-randconfig-c002-20211001 
(https://download.01.org/0day-ci/archive/20211202/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
962e503cc8bc411f7523cc393acae8aae425b1c4)
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=c8a6153b6c59d95c0e091f053f6f180952ade91e
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout c8a6153b6c59d95c0e091f053f6f180952ade91e
        # save the config file 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 >>)
                              ^
   include/linux/log2.h:161:2: note: expanded from macro 'ilog2'
           (sizeof(n) <= 4) ?              \
           ^
   drivers/rtc/rtc-m41t80.c:485:3: note: The value -16 is assigned to 'val'
                   val = 15 - ilog2(rate);
                   ^~~~~~~~~~~~~~~~~~~~~~
   drivers/rtc/rtc-m41t80.c:488:6: note: Assuming 'reg' is >= 0
           if (reg < 0)
               ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                      ^~~~
   drivers/rtc/rtc-m41t80.c:488:2: note: '?' condition is false
           if (reg < 0)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                 ^
   drivers/rtc/rtc-m41t80.c:488:6: note: 'reg' is >= 0
           if (reg < 0)
               ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                                
        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/rtc/rtc-m41t80.c:488:2: note: '?' condition is false
           if (reg < 0)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                       ^
   include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
           ^
   drivers/rtc/rtc-m41t80.c:488:2: note: Taking false branch
           if (reg < 0)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/rtc/rtc-m41t80.c:491:28: note: The result of the left shift is 
undefined because the left operand is negative
           reg = (reg & 0x0f) | (val << 4);
                                 ~~~ ^
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   Suppressed 6 warnings (6 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   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.
   3 warnings generated.
   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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   7 warnings generated.
>> drivers/iommu/iova.c:247:14: warning: Assigned value is garbage or undefined 
>> [clang-analyzer-core.uninitialized.Assign]
                   align_mask <<= fls_long(size - 1);
                              ^
   drivers/iommu/iova.c:503:2: note: '?' condition is false
           if (iova_pfn)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                 ^
   drivers/iommu/iova.c:503:6: note: 'iova_pfn' is 0
           if (iova_pfn)
               ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                                
        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/iommu/iova.c:503:2: note: '?' condition is false
           if (iova_pfn)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                       ^
   include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
           ^
   drivers/iommu/iova.c:503:2: note: Taking false branch
           if (iova_pfn)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/iommu/iova.c:507:13: note: Calling 'alloc_iova'
           new_iova = alloc_iova(iovad, size, limit_pfn, true);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iommu/iova.c:379:6: note: Assuming 'new_iova' is non-null
           if (!new_iova)
               ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                      ^~~~
   drivers/iommu/iova.c:379:2: note: '?' condition is false
           if (!new_iova)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                 ^
   drivers/iommu/iova.c:379:7: note: 'new_iova' is non-null
           if (!new_iova)
                ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                                
        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/iommu/iova.c:379:2: note: '?' condition is false
           if (!new_iova)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                       ^
   include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
           ^
   drivers/iommu/iova.c:379:2: note: Taking false branch
           if (!new_iova)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/iommu/iova.c:382:8: note: Calling '__alloc_and_insert_iova_range'
           ret = __alloc_and_insert_iova_range(iovad, size, limit_pfn + 1,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iommu/iova.c:246:2: note: '?' condition is false
           if (size_aligned)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )

vim +247 drivers/iommu/iova.c

d751751a9f7f2f drivers/iommu/iova.c Marek Szyprowski      2017-02-24  234  
ddf02886cbe665 drivers/pci/iova.c   mark gross            2008-03-04  235  
static int __alloc_and_insert_iova_range(struct iova_domain *iovad,
ddf02886cbe665 drivers/pci/iova.c   mark gross            2008-03-04  236       
        unsigned long size, unsigned long limit_pfn,
ddf02886cbe665 drivers/pci/iova.c   mark gross            2008-03-04  237       
                struct iova *new, bool size_aligned)
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  238  {
973f5fbedb0721 drivers/iommu/iova.c Robin Murphy          2017-09-21  239       
struct rb_node *curr, *prev;
973f5fbedb0721 drivers/iommu/iova.c Robin Murphy          2017-09-21  240       
struct iova *curr_iova;
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  241       
unsigned long flags;
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  242       
unsigned long new_pfn, retry_pfn;
086c83acb70fc6 drivers/iommu/iova.c Zhen Lei              2017-09-21  243       
unsigned long align_mask = ~0UL;
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  244       
unsigned long high_pfn = limit_pfn, low_pfn = iovad->start_pfn;
086c83acb70fc6 drivers/iommu/iova.c Zhen Lei              2017-09-21  245  
086c83acb70fc6 drivers/iommu/iova.c Zhen Lei              2017-09-21  246       
if (size_aligned)
086c83acb70fc6 drivers/iommu/iova.c Zhen Lei              2017-09-21 @247       
        align_mask <<= fls_long(size - 1);
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  248  
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  249       
/* Walk the tree backwards */
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  250       
spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  251       
if (limit_pfn <= iovad->dma_32bit_pfn &&
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  252       
                size >= iovad->max32_alloc_size)
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  253       
        goto iova32_full;
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  254  
973f5fbedb0721 drivers/iommu/iova.c Robin Murphy          2017-09-21  255       
curr = __get_cached_rbnode(iovad, limit_pfn);
7ae31cec5b70e3 drivers/iommu/iova.c Robin Murphy          2021-03-05  256       
curr_iova = to_iova(curr);
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  257       
retry_pfn = curr_iova->pfn_hi + 1;
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  258  
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  259  
retry:
973f5fbedb0721 drivers/iommu/iova.c Robin Murphy          2017-09-21  260       
do {
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  261       
        high_pfn = min(high_pfn, curr_iova->pfn_lo);
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  262       
        new_pfn = (high_pfn - size) & align_mask;
ddf02886cbe665 drivers/pci/iova.c   mark gross            2008-03-04  263       
        prev = curr;
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  264       
        curr = rb_prev(curr);
7ae31cec5b70e3 drivers/iommu/iova.c Robin Murphy          2021-03-05  265       
        curr_iova = to_iova(curr);
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  266       
} while (curr && new_pfn <= curr_iova->pfn_hi && new_pfn >= low_pfn);
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  267  
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  268       
if (high_pfn < size || new_pfn < low_pfn) {
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  269       
        if (low_pfn == iovad->start_pfn && retry_pfn < limit_pfn) {
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  270       
                high_pfn = limit_pfn;
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  271       
                low_pfn = retry_pfn;
371d7955e3102f drivers/iommu/iova.c Robin Murphy          2021-03-05  272       
                curr = iova_find_limit(iovad, limit_pfn);
7ae31cec5b70e3 drivers/iommu/iova.c Robin Murphy          2021-03-05  273       
                curr_iova = to_iova(curr);
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  274       
                goto retry;
4e89dce725213d drivers/iommu/iova.c Vijayanand Jitta      2020-09-30  275       
        }
80ef4464d5e274 drivers/iommu/iova.c Robert Richter        2019-03-20  276       
        iovad->max32_alloc_size = size;
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  277       
        goto iova32_full;
80ef4464d5e274 drivers/iommu/iova.c Robert Richter        2019-03-20  278       
}
f76aec76ec7f68 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  279  
f76aec76ec7f68 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  280       
/* pfn_lo will point to size aligned address if size_aligned is set */
086c83acb70fc6 drivers/iommu/iova.c Zhen Lei              2017-09-21  281       
new->pfn_lo = new_pfn;
f76aec76ec7f68 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  282       
new->pfn_hi = new->pfn_lo + size - 1;
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  283  
d751751a9f7f2f drivers/iommu/iova.c Marek Szyprowski      2017-02-24  284       
/* If we have 'prev', it's a valid place to start the insertion. */
d751751a9f7f2f drivers/iommu/iova.c Marek Szyprowski      2017-02-24  285       
iova_insert_rbtree(&iovad->rbroot, new, prev);
e60aa7b53845a2 drivers/iommu/iova.c Robin Murphy          2017-09-21  286       
__cached_rbnode_insert_update(iovad, new);
ddf02886cbe665 drivers/pci/iova.c   mark gross            2008-03-04  287  
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  288       
spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  289       
return 0;
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  290  
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  291  
iova32_full:
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  292       
spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
bee60e94a1e20e drivers/iommu/iova.c Ganapatrao Kulkarni   2018-09-05  293       
return -ENOMEM;
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  294  }
f8de50eb6b0855 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  295  

:::::: The code at line 247 was first introduced by commit
:::::: 086c83acb70fc6da044c9ca45c1c9780c64545b0 iommu/iova: Optimise the 
padding calculation

:::::: TO: Zhen Lei <[email protected]>
:::::: CC: Joerg Roedel <[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