All of lore.kernel.org
 help / color / mirror / Atom feed
* arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-08-09  8:31 kernel test robot
  2021-08-09 10:57   ` kernel test robot
  0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2021-08-09  8:31 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 16821 bytes --]

CC: clang-built-linux(a)googlegroups.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vitaly Kuznetsov <vkuznets@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   36a21d51725af2ce0700c6ebcb6b9594aac658a6
commit: 10d7bf1e46dc19d964f0f67d2a6d20df907742d1 KVM: x86: hyper-v: Cache guest CPUID leaves determining features availability
date:   8 weeks ago
:::::: branch date: 12 hours ago
:::::: commit date: 8 weeks ago
config: x86_64-randconfig-c001-20210806 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 42b9c2a17a0b63cccf3ac197a82f91b28e53e643)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=10d7bf1e46dc19d964f0f67d2a6d20df907742d1
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 10d7bf1e46dc19d964f0f67d2a6d20df907742d1
        # save the attached .config 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 <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   arch/x86/kvm/hyperv.c:2031:13: note: Assuming the condition is true
           hc.fast = !!(hc.param & HV_HYPERCALL_FAST_BIT);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:2034:14: note: Assuming field 'rep_cnt' is not equal to 0
           hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                       ^~~~~~~~~~
   arch/x86/kvm/hyperv.c:2034:25: note: Left side of '||' is true
           hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                                  ^
   arch/x86/kvm/hyperv.c:2036:9: note: Field 'fast' is false
           if (hc.fast && is_xmm_fast_hypercall(&hc))
                  ^
   arch/x86/kvm/hyperv.c:2036:14: note: Left side of '&&' is false
           if (hc.fast && is_xmm_fast_hypercall(&hc))
                       ^
   arch/x86/kvm/hyperv.c:2042:2: note: Control jumps to 'case 3:'  at line 2073
           switch (hc.code) {
           ^
   arch/x86/kvm/hyperv.c:2074:20: note: Field 'rep_cnt' is not equal to 0
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                    ^
   arch/x86/kvm/hyperv.c:2074:16: note: Left side of '||' is false
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                ^
   arch/x86/kvm/hyperv.c:2074:7: note: Assuming the condition is true
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                       ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   arch/x86/kvm/hyperv.c:2074:3: note: Taking false branch
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                   ^
   arch/x86/kvm/hyperv.c:2078:9: note: Calling 'kvm_hv_flush_tlb'
                   ret = kvm_hv_flush_tlb(vcpu, &hc, false);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1658:7: note: 'ex' is false
           if (!ex) {
                ^~
   arch/x86/kvm/hyperv.c:1658:2: note: Taking true branch
           if (!ex) {
           ^
   arch/x86/kvm/hyperv.c:1659:11: note: Field 'fast' is false
                   if (hc->fast) {
                           ^
   arch/x86/kvm/hyperv.c:1659:3: note: Taking false branch
                   if (hc->fast) {
                   ^
   arch/x86/kvm/hyperv.c:1664:8: note: Assuming the condition is true
                           if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   arch/x86/kvm/hyperv.c:1664:4: note: Taking false branch
                           if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                           ^
   arch/x86/kvm/hyperv.c:1682:15: note: Assuming the condition is false
                   all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1682:14: note: Left side of '||' is false
                   all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                              ^
   arch/x86/kvm/hyperv.c:1683:4: note: Assuming field 'processor_mask' is not equal to 0
                           flush.processor_mask == 0;
                           ^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1731:14: note: 'all_cpus' is false
           vcpu_mask = all_cpus ? NULL :
                       ^~~~~~~~
   arch/x86/kvm/hyperv.c:1731:14: note: '?' condition is false
   arch/x86/kvm/hyperv.c:1732:3: note: Calling 'sparse_set_to_vcpu_mask'
                   sparse_set_to_vcpu_mask(kvm, sparse_banks, valid_bank_mask,
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:36:7: note: expanded from macro 'for_each_set_bit'
                (bit) < (size);                                    \
                ^~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true.  Entering loop body
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:35:2: note: expanded from macro 'for_each_set_bit'
           for ((bit) = find_first_bit((addr), (size));            \
           ^
   arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:36:7: note: expanded from macro 'for_each_set_bit'
                (bit) < (size);                                    \
                ^~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true.  Entering loop body
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:35:2: note: expanded from macro 'for_each_set_bit'
           for ((bit) = find_first_bit((addr), (size));            \
           ^
   arch/x86/kvm/hyperv.c:1615:19: note: Assigned value is garbage or undefined
                   vp_bitmap[bank] = sparse_banks[sbank++];
                                   ^ ~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                               ^~~~~~~   ~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1843:22: note: Value stored to 'hv_vcpu' during its initialization is never read
           struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                               ^~~~~~~   ~~~~~~~~~~~~~~~~
   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.
   3 warnings generated.
   arch/x86/include/asm/xen/hypercall.h:358:9: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           return _hypercall2(int, event_channel_op, cmd, arg);
                  ^
   arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from macro '_hypercall2'
           __HYPERCALL_DECLS;                                              \
           ^
   arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from macro '__HYPERCALL_DECLS'
           register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = __arg1; \
           ^
   drivers/xen/xenbus/xenbus_dev_backend.c:77:6: note: Assuming the condition is false
           if (!capable(CAP_SYS_ADMIN))
               ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/xen/xenbus/xenbus_dev_backend.c:77:2: note: Taking false branch
           if (!capable(CAP_SYS_ADMIN))
           ^
   drivers/xen/xenbus/xenbus_dev_backend.c:80:2: note: Control jumps to 'case 16897:'  at line 85
           switch (cmd) {
           ^
   drivers/xen/xenbus/xenbus_dev_backend.c:86:10: note: Calling 'xenbus_alloc'
                   return xenbus_alloc(data);
                          ^~~~~~~~~~~~~~~~~~
   drivers/xen/xenbus/xenbus_dev_backend.c:47:6: note: Assuming 'xenstored_ready' is 0
           if (xenstored_ready)
               ^~~~~~~~~~~~~~~
   drivers/xen/xenbus/xenbus_dev_backend.c:47:2: note: Taking false branch
           if (xenstored_ready)
           ^
   drivers/xen/xenbus/xenbus_dev_backend.c:56:8: note: Calling 'HYPERVISOR_event_channel_op'
           err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &arg);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/xen/hypercall.h:358:9: note: Assigned value is garbage or undefined
           return _hypercall2(int, event_channel_op, cmd, arg);
                  ^
   arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from macro '_hypercall2'
           __HYPERCALL_DECLS;                                              \
           ^~~~~~~~~~~~~~~~~
   arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from macro '__HYPERCALL_DECLS'
           register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = __arg1; \
           ^                                                        ~~~~~~
   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.
   4 warnings generated.
   drivers/mtd/lpddr/lpddr_cmds.c:441:24: warning: The left operand of '-' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   if (n > vec->iov_len - vec_seek)
                                        ^
   drivers/mtd/lpddr/lpddr_cmds.c:641:9: note: Calling 'lpddr_writev'
           return lpddr_writev(mtd, &vec, 1, to, retlen);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < count; i++)
           ^
   drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is false. Execution continues on line 659
   drivers/mtd/lpddr/lpddr_cmds.c:659:6: note: Assuming 'len' is not equal to 0
           if (!len)
               ^~~~
   drivers/mtd/lpddr/lpddr_cmds.c:659:2: note: Taking false branch
           if (!len)
           ^
   drivers/mtd/lpddr/lpddr_cmds.c:671:7: note: Assuming 'size' is <= 'len'
                   if (size > len)
                       ^~~~~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:671:3: note: Taking false branch
                   if (size > len)
                   ^
   drivers/mtd/lpddr/lpddr_cmds.c:674:9: note: Calling 'do_write_buffer'
                   ret = do_write_buffer(map, &lpddr->chips[chipnum],
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:418:6: note: Assuming 'ret' is 0
           if (ret) {
               ^~~
   drivers/mtd/lpddr/lpddr_cmds.c:418:2: note: Taking false branch
           if (ret) {
           ^
   drivers/mtd/lpddr/lpddr_cmds.c:425:6: note: Assuming 'word_gap' is 0
           if (!word_gap) {
               ^~~~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:425:2: note: Taking true branch
           if (!word_gap) {
           ^
   drivers/mtd/lpddr/lpddr_cmds.c:441:7: note: Assuming the condition is false
                   if (n > vec->iov_len - vec_seek)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:441:3: note: Taking false branch
                   if (n > vec->iov_len - vec_seek)
                   ^
   drivers/mtd/lpddr/lpddr_cmds.c:443:7: note: Assuming 'n' is <= 'len'
                   if (n > len)
                       ^~~~~~~
   drivers/mtd/lpddr/lpddr_cmds.c:443:3: note: Taking false branch

vim +/hv_vcpu +1843 arch/x86/kvm/hyperv.c

214ff83d4473a7 Vitaly Kuznetsov 2018-09-26  1839  
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1840  void kvm_hv_set_cpuid(struct kvm_vcpu *vcpu)
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1841  {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1842  	struct kvm_cpuid_entry2 *entry;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21 @1843  	struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1844  
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1845  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_INTERFACE, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1846  	if (entry && entry->eax == HYPERV_CPUID_SIGNATURE_EAX) {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1847  		vcpu->arch.hyperv_enabled = true;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1848  	} else {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1849  		vcpu->arch.hyperv_enabled = false;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1850  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1851  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1852  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1853  	if (!to_hv_vcpu(vcpu) && kvm_hv_vcpu_init(vcpu))
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1854  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1855  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1856  	hv_vcpu = to_hv_vcpu(vcpu);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1857  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1858  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_FEATURES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1859  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1860  		hv_vcpu->cpuid_cache.features_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1861  		hv_vcpu->cpuid_cache.features_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1862  		hv_vcpu->cpuid_cache.features_edx = entry->edx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1863  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1864  		hv_vcpu->cpuid_cache.features_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1865  		hv_vcpu->cpuid_cache.features_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1866  		hv_vcpu->cpuid_cache.features_edx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1867  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1868  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1869  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_ENLIGHTMENT_INFO, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1870  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1871  		hv_vcpu->cpuid_cache.enlightenments_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1872  		hv_vcpu->cpuid_cache.enlightenments_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1873  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1874  		hv_vcpu->cpuid_cache.enlightenments_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1875  		hv_vcpu->cpuid_cache.enlightenments_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1876  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1877  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1878  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1879  	if (entry)
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1880  		hv_vcpu->cpuid_cache.syndbg_cap_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1881  	else
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1882  		hv_vcpu->cpuid_cache.syndbg_cap_eax = 0;
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1883  }
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1884  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28124 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
  2021-08-09  8:31 arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
@ 2021-08-09 10:57   ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-08-09 10:57 UTC (permalink / raw)
  To: Vitaly Kuznetsov; +Cc: clang-built-linux, kbuild-all, LKML, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 16515 bytes --]


tree: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   36a21d51725af2ce0700c6ebcb6b9594aac658a6
commit: 10d7bf1e46dc19d964f0f67d2a6d20df907742d1 KVM: x86: hyper-v: 
Cache guest CPUID leaves determining features availability
date:   8 weeks ago
:::::: branch date: 12 hours ago
:::::: commit date: 8 weeks ago
config: x86_64-randconfig-c001-20210806 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
42b9c2a17a0b63cccf3ac197a82f91b28e53e643)
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 x86_64 cross compiling tool for clang build
         # apt-get install binutils-x86-64-linux-gnu
         # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=10d7bf1e46dc19d964f0f67d2a6d20df907742d1
         git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
         git fetch --no-tags linus master
         git checkout 10d7bf1e46dc19d964f0f67d2a6d20df907742d1
         # save the attached .config 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 <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
    arch/x86/kvm/hyperv.c:2031:13: note: Assuming the condition is true
            hc.fast = !!(hc.param & HV_HYPERCALL_FAST_BIT);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:2034:14: note: Assuming field 'rep_cnt' is not 
equal to 0
            hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                        ^~~~~~~~~~
    arch/x86/kvm/hyperv.c:2034:25: note: Left side of '||' is true
            hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                                   ^
    arch/x86/kvm/hyperv.c:2036:9: note: Field 'fast' is false
            if (hc.fast && is_xmm_fast_hypercall(&hc))
                   ^
    arch/x86/kvm/hyperv.c:2036:14: note: Left side of '&&' is false
            if (hc.fast && is_xmm_fast_hypercall(&hc))
                        ^
    arch/x86/kvm/hyperv.c:2042:2: note: Control jumps to 'case 3:'  at 
line 2073
            switch (hc.code) {
            ^
    arch/x86/kvm/hyperv.c:2074:20: note: Field 'rep_cnt' is not equal to 0
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                     ^
    arch/x86/kvm/hyperv.c:2074:16: note: Left side of '||' is false
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                 ^
    arch/x86/kvm/hyperv.c:2074:7: note: Assuming the condition is true
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                        ^
    include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
    # define unlikely(x)    __builtin_expect(!!(x), 0)
                                              ^~~~
    arch/x86/kvm/hyperv.c:2074:3: note: Taking false branch
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                    ^
    arch/x86/kvm/hyperv.c:2078:9: note: Calling 'kvm_hv_flush_tlb'
                    ret = kvm_hv_flush_tlb(vcpu, &hc, false);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1658:7: note: 'ex' is false
            if (!ex) {
                 ^~
    arch/x86/kvm/hyperv.c:1658:2: note: Taking true branch
            if (!ex) {
            ^
    arch/x86/kvm/hyperv.c:1659:11: note: Field 'fast' is false
                    if (hc->fast) {
                            ^
    arch/x86/kvm/hyperv.c:1659:3: note: Taking false branch
                    if (hc->fast) {
                    ^
    arch/x86/kvm/hyperv.c:1664:8: note: Assuming the condition is true
                            if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                                ^
    include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
    # define unlikely(x)    __builtin_expect(!!(x), 0)
                                              ^~~~
    arch/x86/kvm/hyperv.c:1664:4: note: Taking false branch
                            if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                            ^
    arch/x86/kvm/hyperv.c:1682:15: note: Assuming the condition is false
                    all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1682:14: note: Left side of '||' is false
                    all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                               ^
    arch/x86/kvm/hyperv.c:1683:4: note: Assuming field 'processor_mask' 
is not equal to 0
                            flush.processor_mask == 0;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1731:14: note: 'all_cpus' is false
            vcpu_mask = all_cpus ? NULL :
                        ^~~~~~~~
    arch/x86/kvm/hyperv.c:1731:14: note: '?' condition is false
    arch/x86/kvm/hyperv.c:1732:3: note: Calling 'sparse_set_to_vcpu_mask'
                    sparse_set_to_vcpu_mask(kvm, sparse_banks, 
valid_bank_mask,
 
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:36:7: note: expanded from macro 
'for_each_set_bit'
                 (bit) < (size);                                    \
                 ^~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true. 
Entering loop body
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:35:2: note: expanded from macro 
'for_each_set_bit'
            for ((bit) = find_first_bit((addr), (size));            \
            ^
    arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:36:7: note: expanded from macro 
'for_each_set_bit'
                 (bit) < (size);                                    \
                 ^~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true. 
Entering loop body
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:35:2: note: expanded from macro 
'for_each_set_bit'
            for ((bit) = find_first_bit((addr), (size));            \
            ^
    arch/x86/kvm/hyperv.c:1615:19: note: Assigned value is garbage or 
undefined
                    vp_bitmap[bank] = sparse_banks[sbank++];
                                    ^ ~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
            struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                                ^~~~~~~   ~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1843:22: note: Value stored to 'hv_vcpu' 
during its initialization is never read
            struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                                ^~~~~~~   ~~~~~~~~~~~~~~~~
    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.
    3 warnings generated.
    arch/x86/include/asm/xen/hypercall.h:358:9: warning: Assigned value 
is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
            return _hypercall2(int, event_channel_op, cmd, arg);
                   ^
    arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from 
macro '_hypercall2'
            __HYPERCALL_DECLS; 
     \
            ^
    arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from 
macro '__HYPERCALL_DECLS'
            register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = 
__arg1; \
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:77:6: note: Assuming the 
condition is false
            if (!capable(CAP_SYS_ADMIN))
                ^~~~~~~~~~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:77:2: note: Taking false branch
            if (!capable(CAP_SYS_ADMIN))
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:80:2: note: Control jumps to 
'case 16897:'  at line 85
            switch (cmd) {
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:86:10: note: Calling 
'xenbus_alloc'
                    return xenbus_alloc(data);
                           ^~~~~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:47:6: note: Assuming 
'xenstored_ready' is 0
            if (xenstored_ready)
                ^~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:47:2: note: Taking false branch
            if (xenstored_ready)
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:56:8: note: Calling 
'HYPERVISOR_event_channel_op'
            err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &arg);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/include/asm/xen/hypercall.h:358:9: note: Assigned value is 
garbage or undefined
            return _hypercall2(int, event_channel_op, cmd, arg);
                   ^
    arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from 
macro '_hypercall2'
            __HYPERCALL_DECLS; 
     \
            ^~~~~~~~~~~~~~~~~
    arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from 
macro '__HYPERCALL_DECLS'
            register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = 
__arg1; \
            ^                                                        ~~~~~~
    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.
    4 warnings generated.
    drivers/mtd/lpddr/lpddr_cmds.c:441:24: warning: The left operand of 
'-' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                    if (n > vec->iov_len - vec_seek)
                                         ^
    drivers/mtd/lpddr/lpddr_cmds.c:641:9: note: Calling 'lpddr_writev'
            return lpddr_writev(mtd, &vec, 1, to, retlen);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is true. 
  Entering loop body
            for (i = 0; i < count; i++)
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is false. 
Execution continues on line 659
    drivers/mtd/lpddr/lpddr_cmds.c:659:6: note: Assuming 'len' is not 
equal to 0
            if (!len)
                ^~~~
    drivers/mtd/lpddr/lpddr_cmds.c:659:2: note: Taking false branch
            if (!len)
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:671:7: note: Assuming 'size' is <= 'len'
                    if (size > len)
                        ^~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:671:3: note: Taking false branch
                    if (size > len)
                    ^
    drivers/mtd/lpddr/lpddr_cmds.c:674:9: note: Calling 'do_write_buffer'
                    ret = do_write_buffer(map, &lpddr->chips[chipnum],
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:418:6: note: Assuming 'ret' is 0
            if (ret) {
                ^~~
    drivers/mtd/lpddr/lpddr_cmds.c:418:2: note: Taking false branch
            if (ret) {
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:425:6: note: Assuming 'word_gap' is 0
            if (!word_gap) {
                ^~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:425:2: note: Taking true branch
            if (!word_gap) {
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:441:7: note: Assuming the condition 
is false
                    if (n > vec->iov_len - vec_seek)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:441:3: note: Taking false branch
                    if (n > vec->iov_len - vec_seek)
                    ^
    drivers/mtd/lpddr/lpddr_cmds.c:443:7: note: Assuming 'n' is <= 'len'
                    if (n > len)
                        ^~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:443:3: note: Taking false branch

vim +/hv_vcpu +1843 arch/x86/kvm/hyperv.c

214ff83d4473a7 Vitaly Kuznetsov 2018-09-26  1839  8f014550dfb114 Vitaly 
Kuznetsov 2021-01-26  1840  void kvm_hv_set_cpuid(struct kvm_vcpu *vcpu)
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1841  {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1842  	struct 
kvm_cpuid_entry2 *entry;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21 @1843  	struct kvm_vcpu_hv 
*hv_vcpu = to_hv_vcpu(vcpu);
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1844  8f014550dfb114 Vitaly 
Kuznetsov 2021-01-26  1845  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_INTERFACE, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1846  	if (entry && 
entry->eax == HYPERV_CPUID_SIGNATURE_EAX) {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1847  	 
vcpu->arch.hyperv_enabled = true;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1848  	} else {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1849  	 
vcpu->arch.hyperv_enabled = false;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1850  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1851  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1852  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1853  	if (!to_hv_vcpu(vcpu) && 
kvm_hv_vcpu_init(vcpu))
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1854  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1855  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1856  	hv_vcpu = to_hv_vcpu(vcpu);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1857  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1858  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_FEATURES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1859  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1860  	 
hv_vcpu->cpuid_cache.features_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1861  	 
hv_vcpu->cpuid_cache.features_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1862  	 
hv_vcpu->cpuid_cache.features_edx = entry->edx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1863  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1864  	 
hv_vcpu->cpuid_cache.features_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1865  	 
hv_vcpu->cpuid_cache.features_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1866  	 
hv_vcpu->cpuid_cache.features_edx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1867  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1868  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1869  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_ENLIGHTMENT_INFO, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1870  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1871  	 
hv_vcpu->cpuid_cache.enlightenments_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1872  	 
hv_vcpu->cpuid_cache.enlightenments_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1873  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1874  	 
hv_vcpu->cpuid_cache.enlightenments_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1875  	 
hv_vcpu->cpuid_cache.enlightenments_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1876  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1877  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1878  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1879  	if (entry)
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1880  	 
hv_vcpu->cpuid_cache.syndbg_cap_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1881  	else
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1882  	 
hv_vcpu->cpuid_cache.syndbg_cap_eax = 0;
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1883  }
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1884
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org


[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28124 bytes --]

[-- Attachment #3: Attached Message Part --]
[-- Type: text/plain, Size: 150 bytes --]

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org


^ permalink raw reply	[flat|nested] 4+ messages in thread

* arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-08-09 10:57   ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-08-09 10:57 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 16862 bytes --]


tree: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   36a21d51725af2ce0700c6ebcb6b9594aac658a6
commit: 10d7bf1e46dc19d964f0f67d2a6d20df907742d1 KVM: x86: hyper-v: 
Cache guest CPUID leaves determining features availability
date:   8 weeks ago
:::::: branch date: 12 hours ago
:::::: commit date: 8 weeks ago
config: x86_64-randconfig-c001-20210806 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
42b9c2a17a0b63cccf3ac197a82f91b28e53e643)
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 x86_64 cross compiling tool for clang build
         # apt-get install binutils-x86-64-linux-gnu
         # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=10d7bf1e46dc19d964f0f67d2a6d20df907742d1
         git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
         git fetch --no-tags linus master
         git checkout 10d7bf1e46dc19d964f0f67d2a6d20df907742d1
         # save the attached .config 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 <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
    arch/x86/kvm/hyperv.c:2031:13: note: Assuming the condition is true
            hc.fast = !!(hc.param & HV_HYPERCALL_FAST_BIT);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:2034:14: note: Assuming field 'rep_cnt' is not 
equal to 0
            hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                        ^~~~~~~~~~
    arch/x86/kvm/hyperv.c:2034:25: note: Left side of '||' is true
            hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                                   ^
    arch/x86/kvm/hyperv.c:2036:9: note: Field 'fast' is false
            if (hc.fast && is_xmm_fast_hypercall(&hc))
                   ^
    arch/x86/kvm/hyperv.c:2036:14: note: Left side of '&&' is false
            if (hc.fast && is_xmm_fast_hypercall(&hc))
                        ^
    arch/x86/kvm/hyperv.c:2042:2: note: Control jumps to 'case 3:'  at 
line 2073
            switch (hc.code) {
            ^
    arch/x86/kvm/hyperv.c:2074:20: note: Field 'rep_cnt' is not equal to 0
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                     ^
    arch/x86/kvm/hyperv.c:2074:16: note: Left side of '||' is false
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                 ^
    arch/x86/kvm/hyperv.c:2074:7: note: Assuming the condition is true
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                        ^
    include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
    # define unlikely(x)    __builtin_expect(!!(x), 0)
                                              ^~~~
    arch/x86/kvm/hyperv.c:2074:3: note: Taking false branch
                    if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                    ^
    arch/x86/kvm/hyperv.c:2078:9: note: Calling 'kvm_hv_flush_tlb'
                    ret = kvm_hv_flush_tlb(vcpu, &hc, false);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1658:7: note: 'ex' is false
            if (!ex) {
                 ^~
    arch/x86/kvm/hyperv.c:1658:2: note: Taking true branch
            if (!ex) {
            ^
    arch/x86/kvm/hyperv.c:1659:11: note: Field 'fast' is false
                    if (hc->fast) {
                            ^
    arch/x86/kvm/hyperv.c:1659:3: note: Taking false branch
                    if (hc->fast) {
                    ^
    arch/x86/kvm/hyperv.c:1664:8: note: Assuming the condition is true
                            if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                                ^
    include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
    # define unlikely(x)    __builtin_expect(!!(x), 0)
                                              ^~~~
    arch/x86/kvm/hyperv.c:1664:4: note: Taking false branch
                            if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                            ^
    arch/x86/kvm/hyperv.c:1682:15: note: Assuming the condition is false
                    all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1682:14: note: Left side of '||' is false
                    all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                               ^
    arch/x86/kvm/hyperv.c:1683:4: note: Assuming field 'processor_mask' 
is not equal to 0
                            flush.processor_mask == 0;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1731:14: note: 'all_cpus' is false
            vcpu_mask = all_cpus ? NULL :
                        ^~~~~~~~
    arch/x86/kvm/hyperv.c:1731:14: note: '?' condition is false
    arch/x86/kvm/hyperv.c:1732:3: note: Calling 'sparse_set_to_vcpu_mask'
                    sparse_set_to_vcpu_mask(kvm, sparse_banks, 
valid_bank_mask,
 
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:36:7: note: expanded from macro 
'for_each_set_bit'
                 (bit) < (size);                                    \
                 ^~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true. 
Entering loop body
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:35:2: note: expanded from macro 
'for_each_set_bit'
            for ((bit) = find_first_bit((addr), (size));            \
            ^
    arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:36:7: note: expanded from macro 
'for_each_set_bit'
                 (bit) < (size);                                    \
                 ^~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true. 
Entering loop body
            for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
            ^
    include/linux/bitops.h:35:2: note: expanded from macro 
'for_each_set_bit'
            for ((bit) = find_first_bit((addr), (size));            \
            ^
    arch/x86/kvm/hyperv.c:1615:19: note: Assigned value is garbage or 
undefined
                    vp_bitmap[bank] = sparse_banks[sbank++];
                                    ^ ~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
            struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                                ^~~~~~~   ~~~~~~~~~~~~~~~~
    arch/x86/kvm/hyperv.c:1843:22: note: Value stored to 'hv_vcpu' 
during its initialization is never read
            struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                                ^~~~~~~   ~~~~~~~~~~~~~~~~
    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.
    3 warnings generated.
    arch/x86/include/asm/xen/hypercall.h:358:9: warning: Assigned value 
is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
            return _hypercall2(int, event_channel_op, cmd, arg);
                   ^
    arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from 
macro '_hypercall2'
            __HYPERCALL_DECLS; 
     \
            ^
    arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from 
macro '__HYPERCALL_DECLS'
            register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = 
__arg1; \
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:77:6: note: Assuming the 
condition is false
            if (!capable(CAP_SYS_ADMIN))
                ^~~~~~~~~~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:77:2: note: Taking false branch
            if (!capable(CAP_SYS_ADMIN))
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:80:2: note: Control jumps to 
'case 16897:'  at line 85
            switch (cmd) {
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:86:10: note: Calling 
'xenbus_alloc'
                    return xenbus_alloc(data);
                           ^~~~~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:47:6: note: Assuming 
'xenstored_ready' is 0
            if (xenstored_ready)
                ^~~~~~~~~~~~~~~
    drivers/xen/xenbus/xenbus_dev_backend.c:47:2: note: Taking false branch
            if (xenstored_ready)
            ^
    drivers/xen/xenbus/xenbus_dev_backend.c:56:8: note: Calling 
'HYPERVISOR_event_channel_op'
            err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &arg);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/x86/include/asm/xen/hypercall.h:358:9: note: Assigned value is 
garbage or undefined
            return _hypercall2(int, event_channel_op, cmd, arg);
                   ^
    arch/x86/include/asm/xen/hypercall.h:169:2: note: expanded from 
macro '_hypercall2'
            __HYPERCALL_DECLS; 
     \
            ^~~~~~~~~~~~~~~~~
    arch/x86/include/asm/xen/hypercall.h:113:2: note: expanded from 
macro '__HYPERCALL_DECLS'
            register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = 
__arg1; \
            ^                                                        ~~~~~~
    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.
    4 warnings generated.
    drivers/mtd/lpddr/lpddr_cmds.c:441:24: warning: The left operand of 
'-' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                    if (n > vec->iov_len - vec_seek)
                                         ^
    drivers/mtd/lpddr/lpddr_cmds.c:641:9: note: Calling 'lpddr_writev'
            return lpddr_writev(mtd, &vec, 1, to, retlen);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is true. 
  Entering loop body
            for (i = 0; i < count; i++)
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:656:2: note: Loop condition is false. 
Execution continues on line 659
    drivers/mtd/lpddr/lpddr_cmds.c:659:6: note: Assuming 'len' is not 
equal to 0
            if (!len)
                ^~~~
    drivers/mtd/lpddr/lpddr_cmds.c:659:2: note: Taking false branch
            if (!len)
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:671:7: note: Assuming 'size' is <= 'len'
                    if (size > len)
                        ^~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:671:3: note: Taking false branch
                    if (size > len)
                    ^
    drivers/mtd/lpddr/lpddr_cmds.c:674:9: note: Calling 'do_write_buffer'
                    ret = do_write_buffer(map, &lpddr->chips[chipnum],
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:418:6: note: Assuming 'ret' is 0
            if (ret) {
                ^~~
    drivers/mtd/lpddr/lpddr_cmds.c:418:2: note: Taking false branch
            if (ret) {
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:425:6: note: Assuming 'word_gap' is 0
            if (!word_gap) {
                ^~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:425:2: note: Taking true branch
            if (!word_gap) {
            ^
    drivers/mtd/lpddr/lpddr_cmds.c:441:7: note: Assuming the condition 
is false
                    if (n > vec->iov_len - vec_seek)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:441:3: note: Taking false branch
                    if (n > vec->iov_len - vec_seek)
                    ^
    drivers/mtd/lpddr/lpddr_cmds.c:443:7: note: Assuming 'n' is <= 'len'
                    if (n > len)
                        ^~~~~~~
    drivers/mtd/lpddr/lpddr_cmds.c:443:3: note: Taking false branch

vim +/hv_vcpu +1843 arch/x86/kvm/hyperv.c

214ff83d4473a7 Vitaly Kuznetsov 2018-09-26  1839  8f014550dfb114 Vitaly 
Kuznetsov 2021-01-26  1840  void kvm_hv_set_cpuid(struct kvm_vcpu *vcpu)
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1841  {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1842  	struct 
kvm_cpuid_entry2 *entry;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21 @1843  	struct kvm_vcpu_hv 
*hv_vcpu = to_hv_vcpu(vcpu);
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1844  8f014550dfb114 Vitaly 
Kuznetsov 2021-01-26  1845  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_INTERFACE, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1846  	if (entry && 
entry->eax == HYPERV_CPUID_SIGNATURE_EAX) {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1847  	 
vcpu->arch.hyperv_enabled = true;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1848  	} else {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1849  	 
vcpu->arch.hyperv_enabled = false;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1850  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1851  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1852  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1853  	if (!to_hv_vcpu(vcpu) && 
kvm_hv_vcpu_init(vcpu))
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1854  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1855  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1856  	hv_vcpu = to_hv_vcpu(vcpu);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1857  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1858  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_FEATURES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1859  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1860  	 
hv_vcpu->cpuid_cache.features_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1861  	 
hv_vcpu->cpuid_cache.features_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1862  	 
hv_vcpu->cpuid_cache.features_edx = entry->edx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1863  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1864  	 
hv_vcpu->cpuid_cache.features_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1865  	 
hv_vcpu->cpuid_cache.features_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1866  	 
hv_vcpu->cpuid_cache.features_edx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1867  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1868  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1869  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_ENLIGHTMENT_INFO, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1870  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1871  	 
hv_vcpu->cpuid_cache.enlightenments_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1872  	 
hv_vcpu->cpuid_cache.enlightenments_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1873  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1874  	 
hv_vcpu->cpuid_cache.enlightenments_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1875  	 
hv_vcpu->cpuid_cache.enlightenments_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1876  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1877  10d7bf1e46dc19 Vitaly 
Kuznetsov 2021-05-21  1878  	entry = kvm_find_cpuid_entry(vcpu, 
HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1879  	if (entry)
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1880  	 
hv_vcpu->cpuid_cache.syndbg_cap_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1881  	else
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1882  	 
hv_vcpu->cpuid_cache.syndbg_cap_eax = 0;
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1883  }
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1884
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org


[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28124 bytes --]

[-- Attachment #3: AttachedMessagePart.ksh --]
[-- Type: text/plain, Size: 150 bytes --]

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org


^ permalink raw reply	[flat|nested] 4+ messages in thread

* arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-08-10  0:36 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-08-10  0:36 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 18502 bytes --]

CC: clang-built-linux(a)googlegroups.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vitaly Kuznetsov <vkuznets@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   36a21d51725af2ce0700c6ebcb6b9594aac658a6
commit: 10d7bf1e46dc19d964f0f67d2a6d20df907742d1 KVM: x86: hyper-v: Cache guest CPUID leaves determining features availability
date:   8 weeks ago
:::::: branch date: 28 hours ago
:::::: commit date: 8 weeks ago
config: x86_64-randconfig-c001-20210806 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 42b9c2a17a0b63cccf3ac197a82f91b28e53e643)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=10d7bf1e46dc19d964f0f67d2a6d20df907742d1
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 10d7bf1e46dc19d964f0f67d2a6d20df907742d1
        # save the attached .config 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 <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   arch/x86/kvm/hyperv.c:2031:13: note: Assuming the condition is true
           hc.fast = !!(hc.param & HV_HYPERCALL_FAST_BIT);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:2034:14: note: Assuming field 'rep_cnt' is not equal to 0
           hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                       ^~~~~~~~~~
   arch/x86/kvm/hyperv.c:2034:25: note: Left side of '||' is true
           hc.rep = !!(hc.rep_cnt || hc.rep_idx);
                                  ^
   arch/x86/kvm/hyperv.c:2036:9: note: Field 'fast' is false
           if (hc.fast && is_xmm_fast_hypercall(&hc))
                  ^
   arch/x86/kvm/hyperv.c:2036:14: note: Left side of '&&' is false
           if (hc.fast && is_xmm_fast_hypercall(&hc))
                       ^
   arch/x86/kvm/hyperv.c:2042:2: note: Control jumps to 'case 3:'  at line 2073
           switch (hc.code) {
           ^
   arch/x86/kvm/hyperv.c:2074:20: note: Field 'rep_cnt' is not equal to 0
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                    ^
   arch/x86/kvm/hyperv.c:2074:16: note: Left side of '||' is false
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                                ^
   arch/x86/kvm/hyperv.c:2074:7: note: Assuming the condition is true
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                       ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   arch/x86/kvm/hyperv.c:2074:3: note: Taking false branch
                   if (unlikely(!hc.rep_cnt || hc.rep_idx)) {
                   ^
   arch/x86/kvm/hyperv.c:2078:9: note: Calling 'kvm_hv_flush_tlb'
                   ret = kvm_hv_flush_tlb(vcpu, &hc, false);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1658:7: note: 'ex' is false
           if (!ex) {
                ^~
   arch/x86/kvm/hyperv.c:1658:2: note: Taking true branch
           if (!ex) {
           ^
   arch/x86/kvm/hyperv.c:1659:11: note: Field 'fast' is false
                   if (hc->fast) {
                           ^
   arch/x86/kvm/hyperv.c:1659:3: note: Taking false branch
                   if (hc->fast) {
                   ^
   arch/x86/kvm/hyperv.c:1664:8: note: Assuming the condition is true
                           if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   arch/x86/kvm/hyperv.c:1664:4: note: Taking false branch
                           if (unlikely(kvm_read_guest(kvm, hc->ingpa,
                           ^
   arch/x86/kvm/hyperv.c:1682:15: note: Assuming the condition is false
                   all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1682:14: note: Left side of '||' is false
                   all_cpus = (flush.flags & HV_FLUSH_ALL_PROCESSORS) ||
                              ^
   arch/x86/kvm/hyperv.c:1683:4: note: Assuming field 'processor_mask' is not equal to 0
                           flush.processor_mask == 0;
                           ^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1731:14: note: 'all_cpus' is false
           vcpu_mask = all_cpus ? NULL :
                       ^~~~~~~~
   arch/x86/kvm/hyperv.c:1731:14: note: '?' condition is false
   arch/x86/kvm/hyperv.c:1732:3: note: Calling 'sparse_set_to_vcpu_mask'
                   sparse_set_to_vcpu_mask(kvm, sparse_banks, valid_bank_mask,
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:36:7: note: expanded from macro 'for_each_set_bit'
                (bit) < (size);                                    \
                ^~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true.  Entering loop body
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:35:2: note: expanded from macro 'for_each_set_bit'
           for ((bit) = find_first_bit((addr), (size));            \
           ^
   arch/x86/kvm/hyperv.c:1613:2: note: Assuming the condition is true
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:36:7: note: expanded from macro 'for_each_set_bit'
                (bit) < (size);                                    \
                ^~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1613:2: note: Loop condition is true.  Entering loop body
           for_each_set_bit(bank, (unsigned long *)&valid_bank_mask,
           ^
   include/linux/bitops.h:35:2: note: expanded from macro 'for_each_set_bit'
           for ((bit) = find_first_bit((addr), (size));            \
           ^
   arch/x86/kvm/hyperv.c:1615:19: note: Assigned value is garbage or undefined
                   vp_bitmap[bank] = sparse_banks[sbank++];
                                   ^ ~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                               ^~~~~~~   ~~~~~~~~~~~~~~~~
   arch/x86/kvm/hyperv.c:1843:22: note: Value stored to 'hv_vcpu' during its initialization is never read
           struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
                               ^~~~~~~   ~~~~~~~~~~~~~~~~
   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.
   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.
   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.
   drivers/base/power/main.c:469:3: warning: Value stored to 'usecs' is never read [clang-analyzer-deadcode.DeadStores]
                   usecs = 1;
                   ^       ~
   drivers/base/power/main.c:469:3: note: Value stored to 'usecs' is never read
                   usecs = 1;
                   ^       ~
   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.
   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.
   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.
   drivers/thermal/thermal_hwmon.c:96: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(type, tz->type);
                   ^~~~~~
   drivers/thermal/thermal_hwmon.c:96: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(type, tz->type);
                   ^~~~~~
   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.
   drivers/i3c/master/mipi-i3c-hci/ext_caps.c:78:7: warning: Value stored to 'mode_entry' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
                   u32 mode_entry = readl(base);
                       ^~~~~~~~~~
   drivers/i3c/master/mipi-i3c-hci/ext_caps.c:78:7: note: Value stored to 'mode_entry' during its initialization is never read
                   u32 mode_entry = readl(base);
                       ^~~~~~~~~~
   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.
   5 warnings generated.
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:293:3: warning: Value stored to 'pid' is never read [clang-analyzer-deadcode.DeadStores]
                   pid = (pid << 32) | device_id[0];
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:293:3: note: Value stored to 'pid' is never read
                   pid = (pid << 32) | device_id[0];
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:294:3: warning: Value stored to 'bcr' is never read [clang-analyzer-deadcode.DeadStores]
                   bcr = FIELD_GET(W1_MASK(55, 48), device_id[1]);
                   ^
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:294:3: note: Value stored to 'bcr' is never read
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:295:3: warning: Value stored to 'dcr' is never read [clang-analyzer-deadcode.DeadStores]
                   dcr = FIELD_GET(W1_MASK(63, 56), device_id[1]);
                   ^
   drivers/i3c/master/mipi-i3c-hci/cmd_v2.c:295:3: note: Value stored to 'dcr' is never read

vim +/hv_vcpu +1843 arch/x86/kvm/hyperv.c

214ff83d4473a7 Vitaly Kuznetsov 2018-09-26  1839  
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1840  void kvm_hv_set_cpuid(struct kvm_vcpu *vcpu)
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1841  {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1842  	struct kvm_cpuid_entry2 *entry;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21 @1843  	struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1844  
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1845  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_INTERFACE, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1846  	if (entry && entry->eax == HYPERV_CPUID_SIGNATURE_EAX) {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1847  		vcpu->arch.hyperv_enabled = true;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1848  	} else {
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1849  		vcpu->arch.hyperv_enabled = false;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1850  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1851  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1852  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1853  	if (!to_hv_vcpu(vcpu) && kvm_hv_vcpu_init(vcpu))
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1854  		return;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1855  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1856  	hv_vcpu = to_hv_vcpu(vcpu);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1857  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1858  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_FEATURES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1859  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1860  		hv_vcpu->cpuid_cache.features_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1861  		hv_vcpu->cpuid_cache.features_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1862  		hv_vcpu->cpuid_cache.features_edx = entry->edx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1863  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1864  		hv_vcpu->cpuid_cache.features_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1865  		hv_vcpu->cpuid_cache.features_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1866  		hv_vcpu->cpuid_cache.features_edx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1867  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1868  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1869  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_ENLIGHTMENT_INFO, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1870  	if (entry) {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1871  		hv_vcpu->cpuid_cache.enlightenments_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1872  		hv_vcpu->cpuid_cache.enlightenments_ebx = entry->ebx;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1873  	} else {
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1874  		hv_vcpu->cpuid_cache.enlightenments_eax = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1875  		hv_vcpu->cpuid_cache.enlightenments_ebx = 0;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1876  	}
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1877  
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1878  	entry = kvm_find_cpuid_entry(vcpu, HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES, 0);
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1879  	if (entry)
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1880  		hv_vcpu->cpuid_cache.syndbg_cap_eax = entry->eax;
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1881  	else
10d7bf1e46dc19 Vitaly Kuznetsov 2021-05-21  1882  		hv_vcpu->cpuid_cache.syndbg_cap_eax = 0;
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1883  }
8f014550dfb114 Vitaly Kuznetsov 2021-01-26  1884  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28124 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-10  0:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-09  8:31 arch/x86/kvm/hyperv.c:1843:22: warning: Value stored to 'hv_vcpu' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2021-08-09 10:57 ` kernel test robot
2021-08-09 10:57   ` kernel test robot
2021-08-10  0:36 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.