linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
       [not found] <202107251901.GJvlsBLV-lkp@intel.com>
@ 2021-07-26  3:43 ` kernel test robot
  2021-07-26 16:02   ` Haiyang Zhang
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2021-07-26  3:43 UTC (permalink / raw)
  To: Haiyang Zhang; +Cc: kbuild-all, LKML, Wei Liu, Michael Kelley

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


Hi Haiyang,

First bad commit (maybe != root cause):

tree: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d8079fac168168b25677dc16c00ffaf9fb7df723
commit: 7c9ff3deeee61b253715dcf968a6307af148c9b2 Drivers: hv: vmbus: Fix 
duplicate CPU assignments within a device
date:   6 days ago
:::::: branch date: 11 hours ago
:::::: commit date: 6 days ago
config: x86_64-randconfig-c001-20210725 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
3f2c1e99e44d028d5e9dd685f3c568f2661f2f68)
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=7c9ff3deeee61b253715dcf968a6307af148c9b2
         git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
         git fetch --no-tags linus master
         git checkout 7c9ff3deeee61b253715dcf968a6307af148c9b2
         # save the attached .config to linux build tree
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross 
clang-analyzer ARCH=x86_64
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 >>)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hid/hid-core.c:1601:3: note: Taking false branch
                    if (field->logical_minimum < 0) /* signed values */
                    ^
    drivers/hid/hid-core.c:1605:44: note: Passing value via 4th 
parameter 'n'
                            implement(hid, data, offset + n * size, size,
                                                                    ^~~~
    drivers/hid/hid-core.c:1605:4: note: Calling 'implement'
                            implement(hid, data, offset + n * size, size,
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hid/hid-core.c:1421:15: note: Assuming 'n' is <= 32
            if (unlikely(n > 32)) {
                         ^
    include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
    # define unlikely(x)    __builtin_expect(!!(x), 0)
                                                ^
    drivers/hid/hid-core.c:1421:2: note: Taking false branch
            if (unlikely(n > 32)) {
            ^
    drivers/hid/hid-core.c:1425:13: note: Assuming 'n' is >= 32
            } else if (n < 32) {
                       ^~~~~~
    drivers/hid/hid-core.c:1425:9: note: Taking false branch
            } else if (n < 32) {
                   ^
    drivers/hid/hid-core.c:1437:30: note: Passing the value 32 via 3rd 
parameter 'n'
            __implement(report, offset, n, value);
                                        ^
    drivers/hid/hid-core.c:1437:2: note: Calling '__implement'
            __implement(report, offset, n, value);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hid/hid-core.c:1400:9: note: Assuming the condition is false
            while (n - bits_to_set >= 0) {
                   ^~~~~~~~~~~~~~~~~~~~
    drivers/hid/hid-core.c:1400:2: note: Loop condition is false. 
Execution continues on line 1411
            while (n - bits_to_set >= 0) {
            ^
    drivers/hid/hid-core.c:1411:6: note: 'n' is 32
            if (n) {
                ^
    drivers/hid/hid-core.c:1411:2: note: Taking true branch
            if (n) {
            ^
    drivers/hid/hid-core.c:1412:22: note: The result of the left shift 
is undefined due to shifting by '32', which is greater or equal to the 
width of type 'unsigned int'
                    u8 bit_mask = ((1U << n) - 1);
                                       ^  ~
    drivers/hid/hid-core.c:1984:3: warning: Value stored to 'len' is 
never read [clang-analyzer-deadcode.DeadStores]
                    len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hid/hid-core.c:1984:3: note: Value stored to 'len' is never read
                    len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Suppressed 5 warnings (5 in non-user code).
    Use -header-filter=.* to display errors from all non-system headers. 
Use -system-headers to display errors from system headers as well.
    6 warnings generated.
    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.
    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.
    4 warnings generated.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    Suppressed 4 warnings (4 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.
    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.
    4 warnings generated.
    Suppressed 4 warnings (4 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.
    9 warnings generated.
    Suppressed 9 warnings (8 in non-user code, 1 with check filters).
    Use -header-filter=.* to display errors from all non-system headers. 
Use -system-headers to display errors from system headers as well.
    5 warnings generated.
    Suppressed 5 warnings (5 in non-user code).
    Use -header-filter=.* to display errors from all non-system headers. 
Use -system-headers to display errors from system headers as well.
    6 warnings generated.
>> drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
            channel->target_cpu = target_cpu;
                                ^
    drivers/hv/channel_mgmt.c:608:2: note: Left side of '&&' is false
            list_for_each_entry(channel, &vmbus_connection.chn_list, 
listentry) {
            ^
    include/linux/list.h:628:13: note: expanded from macro 
'list_for_each_entry'
            for (pos = list_first_entry(head, typeof(*pos), member); 
     \
                       ^
    include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
            list_entry((ptr)->next, type, member)
            ^
    include/linux/list.h:511:2: note: expanded from macro 'list_entry'
            container_of(ptr, type, member)
            ^
    include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
            BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) 
&&   \
                                                                       ^
    drivers/hv/channel_mgmt.c:608:2: note: Taking false branch
            list_for_each_entry(channel, &vmbus_connection.chn_list, 
listentry) {
            ^
    include/linux/list.h:628:13: note: expanded from macro 
'list_for_each_entry'
            for (pos = list_first_entry(head, typeof(*pos), member); 
     \
                       ^
    include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
            list_entry((ptr)->next, type, member)
            ^
    include/linux/list.h:511:2: note: expanded from macro 'list_entry'
            container_of(ptr, type, member)
            ^
    note: (skipping 2 expansions in backtrace; use 
-fmacro-backtrace-limit=0 to see all)
    include/linux/compiler_types.h:328:2: note: expanded from macro 
'compiletime_assert'
            _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
            ^
    include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
            __compiletime_assert(condition, msg, prefix, suffix)
            ^
    include/linux/compiler_types.h:308:3: note: expanded from macro 
'__compiletime_assert'
                    if (!(condition)) 
     \
                    ^
    drivers/hv/channel_mgmt.c:608:2: note: Loop condition is false. 
Exiting loop
            list_for_each_entry(channel, &vmbus_connection.chn_list, 
listentry) {
            ^
    include/linux/list.h:628:13: note: expanded from macro 
'list_for_each_entry'
            for (pos = list_first_entry(head, typeof(*pos), member); 
     \
                       ^
    include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
            list_entry((ptr)->next, type, member)
            ^
    include/linux/list.h:511:2: note: expanded from macro 'list_entry'
            container_of(ptr, type, member)
            ^
    note: (skipping 2 expansions in backtrace; use 
-fmacro-backtrace-limit=0 to see all)
    include/linux/compiler_types.h:328:2: note: expanded from macro 
'compiletime_assert'
            _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
            ^
    include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
            __compiletime_assert(condition, msg, prefix, suffix)
            ^
    include/linux/compiler_types.h:306:2: note: expanded from macro 
'__compiletime_assert'
            do { 
     \
            ^
    drivers/hv/channel_mgmt.c:608:2: note: Loop condition is false. 
Execution continues on line 619
            list_for_each_entry(channel, &vmbus_connection.chn_list, 
listentry) {
            ^
    include/linux/list.h:628:2: note: expanded from macro 
'list_for_each_entry'
            for (pos = list_first_entry(head, typeof(*pos), member); 
     \
            ^
    drivers/hv/channel_mgmt.c:619:2: note: Calling 'init_vp_index'
            init_vp_index(newchannel);
            ^~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hv/channel_mgmt.c:732:2: note: 'target_cpu' declared without 
an initial value
            u32 target_cpu;
            ^~~~~~~~~~~~~~
    drivers/hv/channel_mgmt.c:735:7: note: Assuming the condition is false
            if ((vmbus_proto_version == VERSION_WS2008) ||
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hv/channel_mgmt.c:735:6: note: Left side of '||' is false
            if ((vmbus_proto_version == VERSION_WS2008) ||
                ^
    drivers/hv/channel_mgmt.c:736:7: note: Assuming the condition is false
                (vmbus_proto_version == VERSION_WIN7) || (!perf_chn) ||
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/hv/channel_mgmt.c:735:6: note: Left side of '||' is false
            if ((vmbus_proto_version == VERSION_WS2008) ||
                ^
    drivers/hv/channel_mgmt.c:736:48: note: Assuming 'perf_chn' is true
                (vmbus_proto_version == VERSION_WIN7) || (!perf_chn) ||
                                                          ^~~~~~~~~
    drivers/hv/channel_mgmt.c:735:6: note: Left side of '||' is false
            if ((vmbus_proto_version == VERSION_WS2008) ||
                ^
    drivers/hv/channel_mgmt.c:737:7: note: Calling 'alloc_cpumask_var'
                !alloc_cpumask_var(&available_mask, GFP_KERNEL)) {
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    include/linux/cpumask.h:740:2: note: Returning the value 1, which 
participates in a condition later
            return true;
            ^~~~~~~~~~~
    drivers/hv/channel_mgmt.c:737:7: note: Returning from 
'alloc_cpumask_var'
                !alloc_cpumask_var(&available_mask, GFP_KERNEL)) {
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +785 drivers/hv/channel_mgmt.c

a119845f6e98c8 K. Y. Srinivasan         2012-12-01  714  a119845f6e98c8 
K. Y. Srinivasan         2012-12-01  715  /*
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  716   * Starting 
with Win8, we can statically distribute the incoming
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  717   * channel 
interrupt load by binding a channel to VCPU.
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  718   *
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  719   * For pre-win8 
hosts or non-performance critical channels we assign the
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  720)  * 
VMBUS_CONNECT_CPU.
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  721)  *
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  722)  * Starting 
with win8, performance critical channels will be distributed
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  723)  * evenly among 
all the available NUMA nodes.  Once the node is assigned,
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  724)  * we will 
assign the CPU based on a simple round robin scheme.
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  725   */
afaa33da08abd1 Andrea Parri (Microsoft  2020-05-22  726) static void 
init_vp_index(struct vmbus_channel *channel)
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  727  {
afaa33da08abd1 Andrea Parri (Microsoft  2020-05-22  728) 	bool perf_chn 
= hv_is_perf_channel(channel);
7c9ff3deeee61b Haiyang Zhang            2021-07-16  729  	u32 i, ncpu = 
num_online_cpus();
25355252607ca2 Dexuan Cui               2018-09-23  730  	cpumask_var_t 
available_mask;
9f01ec53458d9e K. Y. Srinivasan         2015-08-05  731  	struct cpumask 
*alloced_mask;
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  732) 	u32 target_cpu;
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  733) 	int numa_node;
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  734  a119845f6e98c8 
K. Y. Srinivasan         2012-12-01  735  	if ((vmbus_proto_version == 
VERSION_WS2008) ||
25355252607ca2 Dexuan Cui               2018-09-23  736  	 
(vmbus_proto_version == VERSION_WIN7) || (!perf_chn) ||
25355252607ca2 Dexuan Cui               2018-09-23  737  	 
!alloc_cpumask_var(&available_mask, GFP_KERNEL)) {
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  738  		/*
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  739  		 * Prior to 
win8, all channel interrupts are
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  740) 		 * delivered 
on VMBUS_CONNECT_CPU.
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  741  		 * Also if 
the channel is not a performance critical
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  742) 		 * channel, 
bind it to VMBUS_CONNECT_CPU.
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  743) 		 * In case 
alloc_cpumask_var() fails, bind it to
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  744) 		 * 
VMBUS_CONNECT_CPU.
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  745  		 */
d570aec0f2154e Andrea Parri (Microsoft  2020-04-06  746) 	 
channel->target_cpu = VMBUS_CONNECT_CPU;
afaa33da08abd1 Andrea Parri (Microsoft  2020-05-22  747) 		if (perf_chn)
afaa33da08abd1 Andrea Parri (Microsoft  2020-05-22  748) 		 
hv_set_alloced_cpu(VMBUS_CONNECT_CPU);
d3ba720dd58cdf K. Y. Srinivasan         2014-04-08  749  		return;
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  750  	}
ce59fec836a9b4 Vitaly Kuznetsov         2015-05-06  751  7c9ff3deeee61b 
Haiyang Zhang            2021-07-16  752  	for (i = 1; i <= ncpu + 1; i++) {
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  753  		while (true) {
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  754) 			numa_node = 
next_numa_node_id++;
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  755) 			if 
(numa_node == nr_node_ids) {
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  756) 			 
next_numa_node_id = 0;
509879bdb30b8e K. Y. Srinivasan         2016-09-02  757  				continue;
509879bdb30b8e K. Y. Srinivasan         2016-09-02  758  			}
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  759) 			if 
(cpumask_empty(cpumask_of_node(numa_node)))
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  760  				continue;
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  761  			break;
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  762  		}
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  763) 		alloced_mask 
= &hv_context.hv_numa_map[numa_node];
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  764  9f01ec53458d9e 
K. Y. Srinivasan         2015-08-05  765  		if 
(cpumask_weight(alloced_mask) ==
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  766) 		 
cpumask_weight(cpumask_of_node(numa_node))) {
ce59fec836a9b4 Vitaly Kuznetsov         2015-05-06  767  			/*
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  768  			 * We have 
cycled through all the CPUs in the node;
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  769  			 * reset the 
alloced map.
ce59fec836a9b4 Vitaly Kuznetsov         2015-05-06  770  			 */
9f01ec53458d9e K. Y. Srinivasan         2015-08-05  771  		 
cpumask_clear(alloced_mask);
ce59fec836a9b4 Vitaly Kuznetsov         2015-05-06  772  		}
ce59fec836a9b4 Vitaly Kuznetsov         2015-05-06  773  7c9ff3deeee61b 
Haiyang Zhang            2021-07-16  774  		cpumask_xor(available_mask, 
alloced_mask,
7c9ff3deeee61b Haiyang Zhang            2021-07-16  775  			 
cpumask_of_node(numa_node));
79fd8e706637a5 Vitaly Kuznetsov         2016-01-27  776  8ef4c4abbbcdcd 
Andrea Parri (Microsoft  2020-04-06  777) 		target_cpu = 
cpumask_first(available_mask);
8ef4c4abbbcdcd Andrea Parri (Microsoft  2020-04-06  778) 	 
cpumask_set_cpu(target_cpu, alloced_mask);
1f656ff3fdddc2 K. Y. Srinivasan         2015-05-30  779  7c9ff3deeee61b 
Haiyang Zhang            2021-07-16  780  		if 
(channel->offermsg.offer.sub_channel_index >= ncpu ||
7c9ff3deeee61b Haiyang Zhang            2021-07-16  781  		    i > ncpu 
|| !hv_cpuself_used(target_cpu, channel))
7c9ff3deeee61b Haiyang Zhang            2021-07-16  782  			break;
7c9ff3deeee61b Haiyang Zhang            2021-07-16  783  	}
7c9ff3deeee61b Haiyang Zhang            2021-07-16  784  8ef4c4abbbcdcd 
Andrea Parri (Microsoft  2020-04-06 @785) 	channel->target_cpu = target_cpu;
25355252607ca2 Dexuan Cui               2018-09-23  786  25355252607ca2 
Dexuan Cui               2018-09-23  787  	free_cpumask_var(available_mask);
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  788  }
a119845f6e98c8 K. Y. Srinivasan         2012-12-01  789
:::::: The code at line 785 was first introduced by commit
:::::: 8ef4c4abbbcdcd9d4bc0fd9454df03e6dac24b73 Drivers: hv: vmbus: 
Remove the unused HV_LOCALIZED channel affinity logic

:::::: TO: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
:::::: CC: Wei Liu <wei.liu@kernel.org>

---
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: 29581 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] 3+ messages in thread

* RE: drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
  2021-07-26  3:43 ` drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] kernel test robot
@ 2021-07-26 16:02   ` Haiyang Zhang
  2021-07-28  8:32     ` Chen, Rong A
  0 siblings, 1 reply; 3+ messages in thread
From: Haiyang Zhang @ 2021-07-26 16:02 UTC (permalink / raw)
  To: kernel test robot; +Cc: kbuild-all, LKML, Wei Liu, Michael Kelley



> -----Original Message-----
> From: kernel test robot <rong.a.chen@intel.com>
> Sent: Sunday, July 25, 2021 11:43 PM
> To: Haiyang Zhang <haiyangz@microsoft.com>
> Cc: kbuild-all@lists.01.org; LKML <linux-kernel@vger.kernel.org>; Wei
> Liu <wei.liu@kernel.org>; Michael Kelley <mikelley@microsoft.com>
> Subject: drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is
> garbage or undefined [clang-analyzer-core.uninitialized.Assign]
> 
> 
> Hi Haiyang,
> 
> First bad commit (maybe != root cause):
> 
> tree:
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&amp;d
> ata=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe7849
> 0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnkn
> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
> JXVCI6Mn0%3D%7C1000&amp;sdata=6LkKnX%2BXhjmhh4m%2BzJ7y0JeQcwvwHw8NZP%2Bv
> aXSdZV0%3D&amp;reserved=0 master
> head:   d8079fac168168b25677dc16c00ffaf9fb7df723
> commit: 7c9ff3deeee61b253715dcf968a6307af148c9b2 Drivers: hv: vmbus: Fix
> duplicate CPU assignments within a device
> date:   6 days ago
> :::::: branch date: 11 hours ago
> :::::: commit date: 6 days ago
> config: x86_64-randconfig-c001-20210725 (attached as .config)
> compiler: clang version 13.0.0
> (https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
> b.com%2Fllvm%2Fllvm-
> project&amp;data=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29b
> f308d94fe78490%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585
> 035821%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT
> iI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=MKdTDUGKunqVOWEwafejDKuW0mpeN
> aP1ssqiv4SBvzQ%3D&amp;reserved=0
> 3f2c1e99e44d028d5e9dd685f3c568f2661f2f68)
> reproduce (this is a W=1 build):
>          wget
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.gi
> thubusercontent.com%2Fintel%2Flkp-
> tests%2Fmaster%2Fsbin%2Fmake.cross&amp;data=04%7C01%7Chaiyangz%40microso
> ft.com%7Cb1a7f087851b48a29bf308d94fe78490%7C72f988bf86f141af91ab2d7cd011
> db47%7C1%7C0%7C637628680585035821%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=gu
> Hq8MagK88xMw%2F6ZxmhQExnmLoIlYLma4QR1gmUYdM%3D&amp;reserved=0
> -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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcom
> mit%2F%3Fid%3D7c9ff3deeee61b253715dcf968a6307af148c9b2&amp;data=04%7C01%
> 7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe78490%7C72f988bf
> 86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnknown%7CTWFpbG
> Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D
> %7C1000&amp;sdata=N24YX%2FPLzONY5gKOu1U93%2B7uK4jm%2BIQYZzfA6z8FPHo%3D&a
> mp;reserved=0
>          git remote add linus
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&amp;d
> ata=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe7849
> 0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnkn
> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
> JXVCI6Mn0%3D%7C1000&amp;sdata=6LkKnX%2BXhjmhh4m%2BzJ7y0JeQcwvwHw8NZP%2Bv
> aXSdZV0%3D&amp;reserved=0
>          git fetch --no-tags linus master
>          git checkout 7c9ff3deeee61b253715dcf968a6307af148c9b2
>          # save the attached .config to linux build tree
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
> clang-analyzer ARCH=x86_64 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 >>)
>                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
>     drivers/hid/hid-core.c:1601:3: note: Taking false branch
>                     if (field->logical_minimum < 0) /* signed values */
>                     ^
>     drivers/hid/hid-core.c:1605:44: note: Passing value via 4th
> parameter 'n'
>                             implement(hid, data, offset + n * size, size,
>                                                                     ^~~~
>     drivers/hid/hid-core.c:1605:4: note: Calling 'implement'
>                             implement(hid, data, offset + n * size, size,
> 
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     drivers/hid/hid-core.c:1421:15: note: Assuming 'n' is <= 32
>             if (unlikely(n > 32)) {
>                          ^
>     include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>     # define unlikely(x)    __builtin_expect(!!(x), 0)
>                                                 ^
>     drivers/hid/hid-core.c:1421:2: note: Taking false branch
>             if (unlikely(n > 32)) {
>             ^
>     drivers/hid/hid-core.c:1425:13: note: Assuming 'n' is >= 32
>             } else if (n < 32) {
>                        ^~~~~~
>     drivers/hid/hid-core.c:1425:9: note: Taking false branch
>             } else if (n < 32) {
>                    ^
>     drivers/hid/hid-core.c:1437:30: note: Passing the value 32 via 3rd
> parameter 'n'
>             __implement(report, offset, n, value);
>                                         ^
>     drivers/hid/hid-core.c:1437:2: note: Calling '__implement'
>             __implement(report, offset, n, value);
>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     drivers/hid/hid-core.c:1400:9: note: Assuming the condition is false
>             while (n - bits_to_set >= 0) {
>                    ^~~~~~~~~~~~~~~~~~~~
>     drivers/hid/hid-core.c:1400:2: note: Loop condition is false.
> Execution continues on line 1411
>             while (n - bits_to_set >= 0) {
>             ^
>     drivers/hid/hid-core.c:1411:6: note: 'n' is 32
>             if (n) {
>                 ^
>     drivers/hid/hid-core.c:1411:2: note: Taking true branch
>             if (n) {
>             ^
>     drivers/hid/hid-core.c:1412:22: note: The result of the left shift
> is undefined due to shifting by '32', which is greater or equal to the
> width of type 'unsigned int'
>                     u8 bit_mask = ((1U << n) - 1);
>                                        ^  ~
>     drivers/hid/hid-core.c:1984:3: warning: Value stored to 'len' is
> never read [clang-analyzer-deadcode.DeadStores]
>                     len += sprintf(buf + len, "%shidraw%d", len ? "," :
> "",
>                     ^
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     drivers/hid/hid-core.c:1984:3: note: Value stored to 'len' is never
> read
>                     len += sprintf(buf + len, "%shidraw%d", len ? "," :
> "",
>                     ^
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     Suppressed 5 warnings (5 in non-user code).
>     Use -header-filter=.* to display errors from all non-system headers.
> Use -system-headers to display errors from system headers as well.
>     6 warnings generated.
>     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.
>     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.
>     4 warnings generated.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     Suppressed 4 warnings (4 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.
>     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.
>     4 warnings generated.
>     Suppressed 4 warnings (4 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.
>     9 warnings generated.
>     Suppressed 9 warnings (8 in non-user code, 1 with check filters).
>     Use -header-filter=.* to display errors from all non-system headers.
> Use -system-headers to display errors from system headers as well.
>     5 warnings generated.
>     Suppressed 5 warnings (5 in non-user code).
>     Use -header-filter=.* to display errors from all non-system headers.
> Use -system-headers to display errors from system headers as well.
>     6 warnings generated.
> >> drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage
> >> or undefined [clang-analyzer-core.uninitialized.Assign]
>             channel->target_cpu = target_cpu;
>                                 ^

The for-loop before the assignment is always executed, 
because ncpu = num_online_cpus() > 0:
	for (i = 1; i <= ncpu + 1; i++) {

So the variable is assigned before Line 785:
		target_cpu = cpumask_first(available_mask);

And, the following code ensures the available_mask is not empty:
		if (cpumask_weight(alloced_mask) ==
		    cpumask_weight(cpumask_of_node(numa_node))) {
			/*
			 * We have cycled through all the CPUs in the node;
			 * reset the alloced map.
			 */
			cpumask_clear(alloced_mask);
		}

So the robot warning above can be ignored.

Thanks,
- Haiyang


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

* Re: drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
  2021-07-26 16:02   ` Haiyang Zhang
@ 2021-07-28  8:32     ` Chen, Rong A
  0 siblings, 0 replies; 3+ messages in thread
From: Chen, Rong A @ 2021-07-28  8:32 UTC (permalink / raw)
  To: Haiyang Zhang; +Cc: kbuild-all, LKML, Wei Liu, Michael Kelley



On 7/27/2021 12:02 AM, Haiyang Zhang wrote:
> 
> 
>> -----Original Message-----
>> From: kernel test robot <rong.a.chen@intel.com>
>> Sent: Sunday, July 25, 2021 11:43 PM
>> To: Haiyang Zhang <haiyangz@microsoft.com>
>> Cc: kbuild-all@lists.01.org; LKML <linux-kernel@vger.kernel.org>; Wei
>> Liu <wei.liu@kernel.org>; Michael Kelley <mikelley@microsoft.com>
>> Subject: drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is
>> garbage or undefined [clang-analyzer-core.uninitialized.Assign]
>>
>>
>> Hi Haiyang,
>>
>> First bad commit (maybe != root cause):
>>
>> tree:
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
>> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&amp;d
>> ata=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe7849
>> 0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnkn
>> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
>> JXVCI6Mn0%3D%7C1000&amp;sdata=6LkKnX%2BXhjmhh4m%2BzJ7y0JeQcwvwHw8NZP%2Bv
>> aXSdZV0%3D&amp;reserved=0 master
>> head:   d8079fac168168b25677dc16c00ffaf9fb7df723
>> commit: 7c9ff3deeee61b253715dcf968a6307af148c9b2 Drivers: hv: vmbus: Fix
>> duplicate CPU assignments within a device
>> date:   6 days ago
>> :::::: branch date: 11 hours ago
>> :::::: commit date: 6 days ago
>> config: x86_64-randconfig-c001-20210725 (attached as .config)
>> compiler: clang version 13.0.0
>> (https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
>> b.com%2Fllvm%2Fllvm-
>> project&amp;data=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29b
>> f308d94fe78490%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585
>> 035821%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT
>> iI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=MKdTDUGKunqVOWEwafejDKuW0mpeN
>> aP1ssqiv4SBvzQ%3D&amp;reserved=0
>> 3f2c1e99e44d028d5e9dd685f3c568f2661f2f68)
>> reproduce (this is a W=1 build):
>>           wget
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.gi
>> thubusercontent.com%2Fintel%2Flkp-
>> tests%2Fmaster%2Fsbin%2Fmake.cross&amp;data=04%7C01%7Chaiyangz%40microso
>> ft.com%7Cb1a7f087851b48a29bf308d94fe78490%7C72f988bf86f141af91ab2d7cd011
>> db47%7C1%7C0%7C637628680585035821%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
>> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=gu
>> Hq8MagK88xMw%2F6ZxmhQExnmLoIlYLma4QR1gmUYdM%3D&amp;reserved=0
>> -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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
>> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcom
>> mit%2F%3Fid%3D7c9ff3deeee61b253715dcf968a6307af148c9b2&amp;data=04%7C01%
>> 7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe78490%7C72f988bf
>> 86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnknown%7CTWFpbG
>> Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D
>> %7C1000&amp;sdata=N24YX%2FPLzONY5gKOu1U93%2B7uK4jm%2BIQYZzfA6z8FPHo%3D&a
>> mp;reserved=0
>>           git remote add linus
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ke
>> rnel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&amp;d
>> ata=04%7C01%7Chaiyangz%40microsoft.com%7Cb1a7f087851b48a29bf308d94fe7849
>> 0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637628680585035821%7CUnkn
>> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
>> JXVCI6Mn0%3D%7C1000&amp;sdata=6LkKnX%2BXhjmhh4m%2BzJ7y0JeQcwvwHw8NZP%2Bv
>> aXSdZV0%3D&amp;reserved=0
>>           git fetch --no-tags linus master
>>           git checkout 7c9ff3deeee61b253715dcf968a6307af148c9b2
>>           # save the attached .config to linux build tree
>>           COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
>> clang-analyzer ARCH=x86_64 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 >>)
>>                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
>>      drivers/hid/hid-core.c:1601:3: note: Taking false branch
>>                      if (field->logical_minimum < 0) /* signed values */
>>                      ^
>>      drivers/hid/hid-core.c:1605:44: note: Passing value via 4th
>> parameter 'n'
>>                              implement(hid, data, offset + n * size, size,
>>                                                                      ^~~~
>>      drivers/hid/hid-core.c:1605:4: note: Calling 'implement'
>>                              implement(hid, data, offset + n * size, size,
>>
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>      drivers/hid/hid-core.c:1421:15: note: Assuming 'n' is <= 32
>>              if (unlikely(n > 32)) {
>>                           ^
>>      include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>>      # define unlikely(x)    __builtin_expect(!!(x), 0)
>>                                                  ^
>>      drivers/hid/hid-core.c:1421:2: note: Taking false branch
>>              if (unlikely(n > 32)) {
>>              ^
>>      drivers/hid/hid-core.c:1425:13: note: Assuming 'n' is >= 32
>>              } else if (n < 32) {
>>                         ^~~~~~
>>      drivers/hid/hid-core.c:1425:9: note: Taking false branch
>>              } else if (n < 32) {
>>                     ^
>>      drivers/hid/hid-core.c:1437:30: note: Passing the value 32 via 3rd
>> parameter 'n'
>>              __implement(report, offset, n, value);
>>                                          ^
>>      drivers/hid/hid-core.c:1437:2: note: Calling '__implement'
>>              __implement(report, offset, n, value);
>>              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>      drivers/hid/hid-core.c:1400:9: note: Assuming the condition is false
>>              while (n - bits_to_set >= 0) {
>>                     ^~~~~~~~~~~~~~~~~~~~
>>      drivers/hid/hid-core.c:1400:2: note: Loop condition is false.
>> Execution continues on line 1411
>>              while (n - bits_to_set >= 0) {
>>              ^
>>      drivers/hid/hid-core.c:1411:6: note: 'n' is 32
>>              if (n) {
>>                  ^
>>      drivers/hid/hid-core.c:1411:2: note: Taking true branch
>>              if (n) {
>>              ^
>>      drivers/hid/hid-core.c:1412:22: note: The result of the left shift
>> is undefined due to shifting by '32', which is greater or equal to the
>> width of type 'unsigned int'
>>                      u8 bit_mask = ((1U << n) - 1);
>>                                         ^  ~
>>      drivers/hid/hid-core.c:1984:3: warning: Value stored to 'len' is
>> never read [clang-analyzer-deadcode.DeadStores]
>>                      len += sprintf(buf + len, "%shidraw%d", len ? "," :
>> "",
>>                      ^
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>      drivers/hid/hid-core.c:1984:3: note: Value stored to 'len' is never
>> read
>>                      len += sprintf(buf + len, "%shidraw%d", len ? "," :
>> "",
>>                      ^
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>      Suppressed 5 warnings (5 in non-user code).
>>      Use -header-filter=.* to display errors from all non-system headers.
>> Use -system-headers to display errors from system headers as well.
>>      6 warnings generated.
>>      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.
>>      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.
>>      4 warnings generated.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      Suppressed 4 warnings (4 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.
>>      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.
>>      4 warnings generated.
>>      Suppressed 4 warnings (4 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.
>>      9 warnings generated.
>>      Suppressed 9 warnings (8 in non-user code, 1 with check filters).
>>      Use -header-filter=.* to display errors from all non-system headers.
>> Use -system-headers to display errors from system headers as well.
>>      5 warnings generated.
>>      Suppressed 5 warnings (5 in non-user code).
>>      Use -header-filter=.* to display errors from all non-system headers.
>> Use -system-headers to display errors from system headers as well.
>>      6 warnings generated.
>>>> drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage
>>>> or undefined [clang-analyzer-core.uninitialized.Assign]
>>              channel->target_cpu = target_cpu;
>>                                  ^
> 
> The for-loop before the assignment is always executed,
> because ncpu = num_online_cpus() > 0:
> 	for (i = 1; i <= ncpu + 1; i++) {
> 
> So the variable is assigned before Line 785:
> 		target_cpu = cpumask_first(available_mask);
> 
> And, the following code ensures the available_mask is not empty:
> 		if (cpumask_weight(alloced_mask) ==
> 		    cpumask_weight(cpumask_of_node(numa_node))) {
> 			/*
> 			 * We have cycled through all the CPUs in the node;
> 			 * reset the alloced map.
> 			 */
> 			cpumask_clear(alloced_mask);
> 		}
> 
> So the robot warning above can be ignored.

Thanks for the detailed explanation, please just ignore it.

Best Regards,
Rong Chen

> 
> Thanks,
> - Haiyang
> 

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

end of thread, other threads:[~2021-07-28  8:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <202107251901.GJvlsBLV-lkp@intel.com>
2021-07-26  3:43 ` drivers/hv/channel_mgmt.c:785:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] kernel test robot
2021-07-26 16:02   ` Haiyang Zhang
2021-07-28  8:32     ` Chen, Rong A

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).