All of lore.kernel.org
 help / color / mirror / Atom feed
* [arm-de:eas/next/integration-20210823+ 120/126] drivers/cpufreq/freq_table.c:397:20: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
@ 2021-11-07  6:18 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-11-07  6:18 UTC (permalink / raw)
  To: kbuild

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vincent Donnefort <vincent.donnefort@arm.com>
CC: Deepak Kumar Mishra <deepakkumar.mishra@arm.com>

tree:   https://git.gitlab.arm.com/linux-arm/linux-de.git eas/next/integration-20210823+
head:   8ec94141c9825682324f96b4abb80b66dccf1a49
commit: 20c0d33c8dc4e6343f969ac290284fd1bb1c269b [120/126] cpufreq: Add an interface to mark inefficient frequencies
:::::: branch date: 6 weeks ago
:::::: commit date: 2 months ago
config: arm-randconfig-c002-20210929 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project dc6e8dfdfe7efecfda318d43a06fae18b40eb498)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        git remote add arm-de https://git.gitlab.arm.com/linux-arm/linux-de.git
        git fetch --no-tags arm-de eas/next/integration-20210823+
        git checkout 20c0d33c8dc4e6343f969ac290284fd1bb1c269b
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   mm/page_alloc.c:8735:8: note: '?' condition is false
           max = min(max, 0x80000000ULL);
                 ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   mm/page_alloc.c:8737:6: note: Assuming 'numentries' is >= 'low_limit'
           if (numentries < low_limit)
               ^~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:8737:2: note: Taking false branch
           if (numentries < low_limit)
           ^
   mm/page_alloc.c:8739:6: note: Assuming 'numentries' is <= 'max'
           if (numentries > max)
               ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:8739:2: note: Taking false branch
           if (numentries > max)
           ^
   mm/page_alloc.c:8742:12: note: '?' condition is false
           log2qty = ilog2(numentries);
                     ^
   include/linux/log2.h:158:2: note: expanded from macro 'ilog2'
           __builtin_constant_p(n) ?       \
           ^
   mm/page_alloc.c:8742:12: note: '?' condition is true
           log2qty = ilog2(numentries);
                     ^
   include/linux/log2.h:161:2: note: expanded from macro 'ilog2'
           (sizeof(n) <= 4) ?              \
           ^
   mm/page_alloc.c:8742:12: note: Calling '__ilog2_u32'
           log2qty = ilog2(numentries);
                     ^
   include/linux/log2.h:162:2: note: expanded from macro 'ilog2'
           __ilog2_u32(n) :                \
           ^~~~~~~~~~~~~~
   include/linux/log2.h:24:2: note: Returning the value -1
           return fls(n) - 1;
           ^~~~~~~~~~~~~~~~~
   mm/page_alloc.c:8742:12: note: Returning from '__ilog2_u32'
           log2qty = ilog2(numentries);
                     ^
   include/linux/log2.h:162:2: note: expanded from macro 'ilog2'
           __ilog2_u32(n) :                \
           ^~~~~~~~~~~~~~
   mm/page_alloc.c:8742:2: note: The value 4294967295 is assigned to 'log2qty'
           log2qty = ilog2(numentries);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:8744:15: note: Assuming the condition is false
           gfp_flags = (flags & HASH_ZERO) ? GFP_ATOMIC | __GFP_ZERO : GFP_ATOMIC;
                        ^~~~~~~~~~~~~~~~~
   mm/page_alloc.c:8744:14: note: '?' condition is false
           gfp_flags = (flags & HASH_ZERO) ? GFP_ATOMIC | __GFP_ZERO : GFP_ATOMIC;
                       ^
   mm/page_alloc.c:8748:7: note: Assuming the condition is true
                   if (flags & HASH_EARLY) {
                       ^~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:8748:3: note: Taking true branch
                   if (flags & HASH_EARLY) {
                   ^
   mm/page_alloc.c:8749:4: note: Taking false branch
                           if (flags & HASH_ZERO)
                           ^
   mm/page_alloc.c:8767:11: note: Assuming 'table' is non-null
           } while (!table && size > PAGE_SIZE && --log2qty);
                    ^~~~~~
   mm/page_alloc.c:8767:18: note: Left side of '&&' is false
           } while (!table && size > PAGE_SIZE && --log2qty);
                           ^
   mm/page_alloc.c:8745:2: note: Loop condition is false.  Exiting loop
           do {
           ^
   mm/page_alloc.c:8769:7: note: 'table' is non-null
           if (!table)
                ^~~~~
   mm/page_alloc.c:8769:2: note: Taking false branch
           if (!table)
           ^
   mm/page_alloc.c:8773:18: note: The result of the left shift is undefined due to shifting by '4294967295', which is greater or equal to the width of type 'unsigned long'
                   tablename, 1UL << log2qty, ilog2(size) - PAGE_SHIFT, size,
                                  ^
   include/linux/printk.h:420:34: note: expanded from macro 'pr_info'
           printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
                                           ^~~~~~~~~~~
   Suppressed 20 warnings (19 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.
   3 warnings generated.
>> drivers/cpufreq/freq_table.c:397:20: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
                                   pos->efficient = efficient;
                                                  ^ ~~~~~~~~~
   drivers/cpufreq/freq_table.c:372:6: note: 'efficient' declared without an initial value
           int efficient, idx;
               ^~~~~~~~~
   drivers/cpufreq/freq_table.c:375:6: note: Assuming 'sort' is not equal to CPUFREQ_TABLE_UNSORTED
           if (sort == CPUFREQ_TABLE_UNSORTED) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/freq_table.c:375:2: note: Taking false branch
           if (sort == CPUFREQ_TABLE_UNSORTED) {
           ^
   drivers/cpufreq/freq_table.c:382:29: note: Assuming the condition is false
           cpufreq_for_each_entry_idx(pos, table, idx) {
                                      ^
   include/linux/cpufreq.h:716:29: note: expanded from macro 'cpufreq_for_each_entry_idx'
           for (pos = table, idx = 0; pos->frequency != CPUFREQ_TABLE_END; \
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/freq_table.c:382:2: note: Loop condition is false. Execution continues on line 392
           cpufreq_for_each_entry_idx(pos, table, idx) {
           ^
   include/linux/cpufreq.h:716:2: note: expanded from macro 'cpufreq_for_each_entry_idx'
           for (pos = table, idx = 0; pos->frequency != CPUFREQ_TABLE_END; \
           ^
   drivers/cpufreq/freq_table.c:392:2: note: Loop condition is true.  Entering loop body
           for (;;) {
           ^
   drivers/cpufreq/freq_table.c:395:3: note: Taking true branch
                   if (pos->frequency != CPUFREQ_ENTRY_INVALID) {
                   ^
   drivers/cpufreq/freq_table.c:396:8: note: Assuming the condition is true
                           if (pos->flags & CPUFREQ_INEFFICIENT_FREQ) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/freq_table.c:396:4: note: Taking true branch
                           if (pos->flags & CPUFREQ_INEFFICIENT_FREQ) {
                           ^
   drivers/cpufreq/freq_table.c:397:20: note: Assigned value is garbage or undefined
                                   pos->efficient = efficient;
                                                  ^ ~~~~~~~~~
   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.
   19 warnings generated.
   Suppressed 19 warnings (19 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.
   18 warnings generated.
   Suppressed 18 warnings (18 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.
   20 warnings generated.
   fs/fuse/file.c:1392:44: warning: The left operand of '<' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           while (nbytes < *nbytesp && ap->num_pages < max_pages) {
                                                     ^
   fs/fuse/file.c:1594:2: note: Taking false branch
           if (fuse_is_bad(inode))
           ^
   fs/fuse/file.c:1597:6: note: Left side of '&&' is false
           if (FUSE_IS_DAX(inode))
               ^
   fs/fuse/fuse_i.h:1239:57: note: expanded from macro 'FUSE_IS_DAX'
   #define FUSE_IS_DAX(inode) (IS_ENABLED(CONFIG_FUSE_DAX) && IS_DAX(inode))
                                                           ^
   fs/fuse/file.c:1600:6: note: Assuming the condition is false
           if (!(ff->open_flags & FOPEN_DIRECT_IO))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fuse/file.c:1600:2: note: Taking false branch
           if (!(ff->open_flags & FOPEN_DIRECT_IO))
           ^
   fs/fuse/file.c:1603:10: note: Calling 'fuse_direct_write_iter'
                   return fuse_direct_write_iter(iocb, from);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fuse/file.c:1554:6: note: Assuming 'res' is > 0
           if (res > 0) {
               ^~~~~~~
   fs/fuse/file.c:1554:2: note: Taking true branch
           if (res > 0) {
           ^
   fs/fuse/file.c:1555:7: note: Left side of '&&' is true
                   if (!is_sync_kiocb(iocb) && iocb->ki_flags & IOCB_DIRECT) {
                       ^
   fs/fuse/file.c:1555:31: note: Assuming the condition is true
                   if (!is_sync_kiocb(iocb) && iocb->ki_flags & IOCB_DIRECT) {
                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fuse/file.c:1555:3: note: Taking true branch
                   if (!is_sync_kiocb(iocb) && iocb->ki_flags & IOCB_DIRECT) {
                   ^
   fs/fuse/file.c:1556:10: note: Calling 'fuse_direct_IO'
                           res = fuse_direct_IO(iocb, from);

vim +397 drivers/cpufreq/freq_table.c

d417e0691ac00d Viresh Kumar      2018-02-22  367  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  368  void cpufreq_table_update_efficiencies(struct cpufreq_policy *policy)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  369  {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  370  	struct cpufreq_frequency_table *pos, *table = policy->freq_table;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  371  	enum cpufreq_table_sorting sort = policy->freq_table_sorted;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  372  	int efficient, idx;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  373  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  374  	/* Not supported */
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  375  	if (sort == CPUFREQ_TABLE_UNSORTED) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  376  		cpufreq_for_each_entry_idx(pos, table, idx)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  377  			pos->efficient = idx;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  378  		return;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  379  	}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  380  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  381  	/* The highest frequency is always efficient */
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  382  	cpufreq_for_each_entry_idx(pos, table, idx) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  383  		if (pos->frequency == CPUFREQ_ENTRY_INVALID)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  384  			continue;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  385  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  386  		efficient = idx;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  387  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  388  		if (sort == CPUFREQ_TABLE_SORTED_DESCENDING)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  389  			break;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  390  	}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  391  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  392  	for (;;) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  393  		pos = &table[idx];
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  394  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  395  		if (pos->frequency != CPUFREQ_ENTRY_INVALID) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  396  			if (pos->flags & CPUFREQ_INEFFICIENT_FREQ) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02 @397  				pos->efficient = efficient;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  398  			} else {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  399  				pos->efficient = idx;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  400  				efficient = idx;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  401  			}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  402  		}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  403  
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  404  		if (sort == CPUFREQ_TABLE_SORTED_ASCENDING) {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  405  			if (--idx < 0)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  406  				break;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  407  		} else {
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  408  			if (table[++idx].frequency == CPUFREQ_TABLE_END)
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  409  				break;
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  410  		}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  411  	}
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  412  }
20c0d33c8dc4e6 Vincent Donnefort 2021-06-02  413  

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

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

only message in thread, other threads:[~2021-11-07  6:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-07  6:18 [arm-de:eas/next/integration-20210823+ 120/126] drivers/cpufreq/freq_table.c:397:20: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] 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.