All of lore.kernel.org
 help / color / mirror / Atom feed
* [uprobes:fix_numa_depth 7/7] arch/powerpc/mm/numa.c:914:4: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
@ 2021-08-19 16:48 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-08-19 16:48 UTC (permalink / raw)
  To: kbuild

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

CC: clang-built-linux(a)googlegroups.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Srikar Dronamraju <srikar@linux.vnet.ibm.com>

tree:   https://github.com/srikard/linux.git fix_numa_depth
head:   b4a46662136d812879c3199bdd8aa95d47ccde92
commit: b4a46662136d812879c3199bdd8aa95d47ccde92 [7/7] powerpc/numa: Fill distance_lookup_table for offline nodes
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago
config: powerpc-randconfig-c003-20210818 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc64-linux-gnu
        # https://github.com/srikard/linux/commit/b4a46662136d812879c3199bdd8aa95d47ccde92
        git remote add uprobes https://github.com/srikard/linux.git
        git fetch --no-tags uprobes fix_numa_depth
        git checkout b4a46662136d812879c3199bdd8aa95d47ccde92
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc 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 >>)
   10 warnings generated.
   Suppressed 10 warnings (9 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.
   11 warnings generated.
   Suppressed 11 warnings (9 in non-user code, 2 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.
   11 warnings generated.
   arch/powerpc/include/asm/bitops.h:89:11: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
           set_bits(BIT_MASK(nr), addr + BIT_WORD(nr));
                    ^
   include/linux/bits.h:10:30: note: expanded from macro 'BIT_MASK'
   #define BIT_MASK(nr)            (UL(1) << ((nr) % BITS_PER_LONG))
                                          ^
   arch/powerpc/mm/numa.c:1015:6: note: Calling 'parse_numa_properties'
           if (parse_numa_properties())
               ^~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:702:6: note: Assuming 'numa_enabled' is not equal to 0
           if (numa_enabled == 0) {
               ^~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:702:2: note: Taking false branch
           if (numa_enabled == 0) {
           ^
   arch/powerpc/mm/numa.c:709:6: note: 'min_common_depth' is >= 0
           if (min_common_depth < 0) {
               ^~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:709:2: note: Taking false branch
           if (min_common_depth < 0) {
           ^
   arch/powerpc/mm/numa.c:718:2: note: Assuming 'numa_debug' is 0
           dbg("NUMA associativity depth for CPU/Memory: %d\n", min_common_depth);
           ^
   arch/powerpc/mm/numa.c:44:26: note: expanded from macro 'dbg'
   #define dbg(args...) if (numa_debug) { printk(KERN_INFO args); }
                            ^~~~~~~~~~
   arch/powerpc/mm/numa.c:718:2: note: Taking false branch
           dbg("NUMA associativity depth for CPU/Memory: %d\n", min_common_depth);
           ^
   arch/powerpc/mm/numa.c:44:22: note: expanded from macro 'dbg'
   #define dbg(args...) if (numa_debug) { printk(KERN_INFO args); }
                        ^
   arch/powerpc/mm/numa.c:725:2: note: Assuming 'i' is < 'nr_cpu_ids'
           for_each_present_cpu(i) {
           ^
   include/linux/cpumask.h:790:36: note: expanded from macro 'for_each_present_cpu'
   #define for_each_present_cpu(cpu)  for_each_cpu((cpu), cpu_present_mask)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/cpumask.h:243:3: note: expanded from macro 'for_each_cpu'
                   (cpu) < nr_cpu_ids;)
                   ^~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:725:2: note: Loop condition is true.  Entering loop body
           for_each_present_cpu(i) {
           ^
   include/linux/cpumask.h:790:36: note: expanded from macro 'for_each_present_cpu'
   #define for_each_present_cpu(cpu)  for_each_cpu((cpu), cpu_present_mask)
                                      ^
   include/linux/cpumask.h:241:2: note: expanded from macro 'for_each_cpu'
           for ((cpu) = -1;                                \
           ^
   arch/powerpc/mm/numa.c:734:3: note: Taking true branch
                   if (nid == NUMA_NO_NODE) {
                   ^
   arch/powerpc/mm/numa.c:736:11: note: Assuming 'cpu' is null
                           BUG_ON(!cpu);
                                  ^
   arch/powerpc/include/asm/bug.h:73:27: note: expanded from macro 'BUG_ON'
           if (__builtin_constant_p(x)) {                          \
                                    ^
   arch/powerpc/mm/numa.c:736:4: note: Taking false branch
                           BUG_ON(!cpu);
                           ^
   arch/powerpc/include/asm/bug.h:73:2: note: expanded from macro 'BUG_ON'
           if (__builtin_constant_p(x)) {                          \
           ^
   arch/powerpc/mm/numa.c:736:4: note: Loop condition is false.  Exiting loop
                           BUG_ON(!cpu);
                           ^
   arch/powerpc/include/asm/bug.h:72:19: note: expanded from macro 'BUG_ON'
   #define BUG_ON(x) do {                                          \
                     ^
   arch/powerpc/mm/numa.c:741:3: note: Calling 'node_set_online'
                   node_set_online(nid);
                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/nodemask.h:453:2: note: Calling 'node_set_state'
           node_set_state(nid, N_ONLINE);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/nodemask.h:421:2: note: Calling '__node_set'
           __node_set(node, &node_states[state]);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/nodemask.h:130:2: note: Calling 'set_bit'
           set_bit(node, dstp->bits);
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/instrumented-atomic.h:29:2: note: Calling 'arch_set_bit'
           arch_set_bit(nr, addr);
           ^~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/bitops.h:89:11: note: The result of the left shift is undefined because the right operand is negative
           set_bits(BIT_MASK(nr), addr + BIT_WORD(nr));
                    ^
   include/linux/bits.h:10:30: note: expanded from macro 'BIT_MASK'
   #define BIT_MASK(nr)            (UL(1) << ((nr) % BITS_PER_LONG))
                                          ^  ~~~~~~~~~~~~~~~~~~~~~~
>> arch/powerpc/mm/numa.c:914:4: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                           pr_warn("Levels(%d) not matching levels(%d)", nr_levels, nr_depth);
                           ^
   include/linux/printk.h:353:2: note: expanded from macro 'pr_warn'
           printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   arch/powerpc/mm/numa.c:1015:2: note: Taking true branch
           if (parse_numa_properties())
           ^
   arch/powerpc/mm/numa.c:1032:2: note: Assuming 'cpu' is >= 'nr_cpu_ids'
           for_each_possible_cpu(cpu) {
           ^
   include/linux/cpumask.h:788:36: note: expanded from macro 'for_each_possible_cpu'
   #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/cpumask.h:243:3: note: expanded from macro 'for_each_cpu'
                   (cpu) < nr_cpu_ids;)
                   ^~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:1032:2: note: Loop condition is false. Execution continues on line 1043
           for_each_possible_cpu(cpu) {
           ^
   include/linux/cpumask.h:788:36: note: expanded from macro 'for_each_possible_cpu'
   #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask)
                                      ^
   include/linux/cpumask.h:241:2: note: expanded from macro 'for_each_cpu'
           for ((cpu) = -1;                                \
           ^
   arch/powerpc/mm/numa.c:1043:2: note: Calling 'fake_update_distance_lookup_table'
           fake_update_distance_lookup_table();
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:870:9: note: 'nr_levels' declared without an initial value
           int i, nr_levels, nr_depth, node;
                  ^~~~~~~~~
   arch/powerpc/mm/numa.c:872:6: note: Assuming 'numa_enabled' is not equal to 0
           if (!numa_enabled)
               ^~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:872:2: note: Taking false branch
           if (!numa_enabled)
           ^
   arch/powerpc/mm/numa.c:875:6: note: Assuming 'form1_affinity' is not equal to 0
           if (!form1_affinity)
               ^~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:875:2: note: Taking false branch
           if (!form1_affinity)
           ^
   arch/powerpc/mm/numa.c:885:10: note: Assuming the condition is false
           WARN_ON(nr_depth > sizeof(distance_map));
                   ^
   arch/powerpc/include/asm/bug.h:84:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(x);                              \
                                  ^
   arch/powerpc/mm/numa.c:885:2: note: Taking false branch
           WARN_ON(nr_depth > sizeof(distance_map));
           ^
   arch/powerpc/include/asm/bug.h:85:2: note: expanded from macro 'WARN_ON'
           if (__builtin_constant_p(__ret_warn_on)) {              \
           ^
   arch/powerpc/mm/numa.c:890:2: note: Loop condition is false. Execution continues on line 908
           for_each_online_node(node) {
           ^
   include/linux/nodemask.h:515:36: note: expanded from macro 'for_each_online_node'
   #define for_each_online_node(node) for_each_node_state(node, N_ONLINE)
                                      ^
   include/linux/nodemask.h:435:2: note: expanded from macro 'for_each_node_state'
           for_each_node_mask((__node), node_states[__state])
           ^
   include/linux/nodemask.h:379:2: note: expanded from macro 'for_each_node_mask'
           for ((node) = first_node(mask);                 \
           ^
   arch/powerpc/mm/numa.c:908:2: note: Assuming the condition is true
           for_each_node(node) {
           ^
   include/linux/nodemask.h:514:32: note: expanded from macro 'for_each_node'
   #define for_each_node(node)        for_each_node_state(node, N_POSSIBLE)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/nodemask.h:435:2: note: expanded from macro 'for_each_node_state'
           for_each_node_mask((__node), node_states[__state])
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/nodemask.h:380:3: note: expanded from macro 'for_each_node_mask'
                   (node) < MAX_NUMNODES;                  \
                   ^~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:908:2: note: Loop condition is true.  Entering loop body
           for_each_node(node) {
           ^
   include/linux/nodemask.h:514:32: note: expanded from macro 'for_each_node'
   #define for_each_node(node)        for_each_node_state(node, N_POSSIBLE)
                                      ^
   include/linux/nodemask.h:435:2: note: expanded from macro 'for_each_node_state'
           for_each_node_mask((__node), node_states[__state])
           ^
   include/linux/nodemask.h:379:2: note: expanded from macro 'for_each_node_mask'
           for ((node) = first_node(mask);                 \
           ^
   arch/powerpc/mm/numa.c:909:7: note: Assuming the condition is false
                   if (node_online(node))
                       ^
   include/linux/nodemask.h:511:27: note: expanded from macro 'node_online'
   #define node_online(node)       node_state((node), N_ONLINE)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/mm/numa.c:909:3: note: Taking false branch
                   if (node_online(node))

vim +914 arch/powerpc/mm/numa.c

4b703a231799f4 Anton Blanchard   2005-12-13  858  
b4a46662136d81 Srikar Dronamraju 2021-06-03  859  /*
b4a46662136d81 Srikar Dronamraju 2021-06-03  860   * Scheduler expects unique number of node distances to be available at
b4a46662136d81 Srikar Dronamraju 2021-06-03  861   * boot. It uses node distance to calculate this unique node distances. On
b4a46662136d81 Srikar Dronamraju 2021-06-03  862   * POWER, node distances for offline nodes is not available. However, POWER
b4a46662136d81 Srikar Dronamraju 2021-06-03  863   * already knows unique possible node distances. Fake the offline node's
b4a46662136d81 Srikar Dronamraju 2021-06-03  864   * distance_lookup_table entries so that all possible node distances are
b4a46662136d81 Srikar Dronamraju 2021-06-03  865   * updated.
b4a46662136d81 Srikar Dronamraju 2021-06-03  866   */
b4a46662136d81 Srikar Dronamraju 2021-06-03  867  static void __init fake_update_distance_lookup_table(void)
b4a46662136d81 Srikar Dronamraju 2021-06-03  868  {
b4a46662136d81 Srikar Dronamraju 2021-06-03  869  	unsigned long distance_map;
b4a46662136d81 Srikar Dronamraju 2021-06-03  870  	int i, nr_levels, nr_depth, node;
b4a46662136d81 Srikar Dronamraju 2021-06-03  871  
b4a46662136d81 Srikar Dronamraju 2021-06-03  872  	if (!numa_enabled)
b4a46662136d81 Srikar Dronamraju 2021-06-03  873  		return;
b4a46662136d81 Srikar Dronamraju 2021-06-03  874  
b4a46662136d81 Srikar Dronamraju 2021-06-03  875  	if (!form1_affinity)
b4a46662136d81 Srikar Dronamraju 2021-06-03  876  		return;
b4a46662136d81 Srikar Dronamraju 2021-06-03  877  
b4a46662136d81 Srikar Dronamraju 2021-06-03  878  	/*
b4a46662136d81 Srikar Dronamraju 2021-06-03  879  	 * distance_ref_points_depth lists the unique numa domains
b4a46662136d81 Srikar Dronamraju 2021-06-03  880  	 * available. However it ignore LOCAL_DISTANCE. So add +1
b4a46662136d81 Srikar Dronamraju 2021-06-03  881  	 * to get the actual number of unique distances.
b4a46662136d81 Srikar Dronamraju 2021-06-03  882  	 */
b4a46662136d81 Srikar Dronamraju 2021-06-03  883  	nr_depth = distance_ref_points_depth + 1;
b4a46662136d81 Srikar Dronamraju 2021-06-03  884  
b4a46662136d81 Srikar Dronamraju 2021-06-03  885  	WARN_ON(nr_depth > sizeof(distance_map));
b4a46662136d81 Srikar Dronamraju 2021-06-03  886  
b4a46662136d81 Srikar Dronamraju 2021-06-03  887  	bitmap_zero(&distance_map, nr_depth);
b4a46662136d81 Srikar Dronamraju 2021-06-03  888  	bitmap_set(&distance_map, 0, 1);
b4a46662136d81 Srikar Dronamraju 2021-06-03  889  
b4a46662136d81 Srikar Dronamraju 2021-06-03  890  	for_each_online_node(node) {
b4a46662136d81 Srikar Dronamraju 2021-06-03  891  		int nd, distance = LOCAL_DISTANCE;
b4a46662136d81 Srikar Dronamraju 2021-06-03  892  
b4a46662136d81 Srikar Dronamraju 2021-06-03  893  		if (node == first_online_node)
b4a46662136d81 Srikar Dronamraju 2021-06-03  894  			continue;
b4a46662136d81 Srikar Dronamraju 2021-06-03  895  
b4a46662136d81 Srikar Dronamraju 2021-06-03  896  		nd = __node_distance(node, first_online_node);
b4a46662136d81 Srikar Dronamraju 2021-06-03  897  		for (i = 0; i < nr_depth; i++, distance *= 2) {
b4a46662136d81 Srikar Dronamraju 2021-06-03  898  			if (distance == nd) {
b4a46662136d81 Srikar Dronamraju 2021-06-03  899  				bitmap_set(&distance_map, i, 1);
b4a46662136d81 Srikar Dronamraju 2021-06-03  900  				break;
b4a46662136d81 Srikar Dronamraju 2021-06-03  901  			}
b4a46662136d81 Srikar Dronamraju 2021-06-03  902  		}
b4a46662136d81 Srikar Dronamraju 2021-06-03  903  		nr_levels = bitmap_weight(&distance_map, nr_depth);
b4a46662136d81 Srikar Dronamraju 2021-06-03  904  		if (nr_levels == nr_depth)
b4a46662136d81 Srikar Dronamraju 2021-06-03  905  			return;
b4a46662136d81 Srikar Dronamraju 2021-06-03  906  	}
b4a46662136d81 Srikar Dronamraju 2021-06-03  907  
b4a46662136d81 Srikar Dronamraju 2021-06-03  908  	for_each_node(node) {
b4a46662136d81 Srikar Dronamraju 2021-06-03  909  		if (node_online(node))
b4a46662136d81 Srikar Dronamraju 2021-06-03  910  			continue;
b4a46662136d81 Srikar Dronamraju 2021-06-03  911  
b4a46662136d81 Srikar Dronamraju 2021-06-03  912  		i = find_first_zero_bit(&distance_map, nr_depth);
b4a46662136d81 Srikar Dronamraju 2021-06-03  913  		if (i >= nr_depth || i == 0) {
b4a46662136d81 Srikar Dronamraju 2021-06-03 @914  			pr_warn("Levels(%d) not matching levels(%d)", nr_levels, nr_depth);
b4a46662136d81 Srikar Dronamraju 2021-06-03  915  			return;
b4a46662136d81 Srikar Dronamraju 2021-06-03  916  		}
b4a46662136d81 Srikar Dronamraju 2021-06-03  917  
b4a46662136d81 Srikar Dronamraju 2021-06-03  918  		bitmap_set(&distance_map, i, 1);
b4a46662136d81 Srikar Dronamraju 2021-06-03  919  		while (i--)
b4a46662136d81 Srikar Dronamraju 2021-06-03  920  			distance_lookup_table[node][i] = node;
b4a46662136d81 Srikar Dronamraju 2021-06-03  921  
b4a46662136d81 Srikar Dronamraju 2021-06-03  922  		nr_levels = bitmap_weight(&distance_map, nr_depth);
b4a46662136d81 Srikar Dronamraju 2021-06-03  923  		if (nr_levels == nr_depth)
b4a46662136d81 Srikar Dronamraju 2021-06-03  924  			return;
b4a46662136d81 Srikar Dronamraju 2021-06-03  925  	}
b4a46662136d81 Srikar Dronamraju 2021-06-03  926  }
b4a46662136d81 Srikar Dronamraju 2021-06-03  927  

---
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: 42086 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-08-19 16:48 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19 16:48 [uprobes:fix_numa_depth 7/7] arch/powerpc/mm/numa.c:914:4: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] 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.