CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Dominik Brodowski <[email protected]>

Hi Dominik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on v5.17-rc1 next-20220125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Dominik-Brodowski/hw_random-explicit-ordering-of-initcalls/20220125-051254
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 
515a2f507491e7c3818e74ef4f4e088c1fecb190
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: riscv-randconfig-c006-20220124 
(https://download.01.org/0day-ci/archive/20220125/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
997e128e2a78f5a5434fc75997441ae1ee76f8a4)
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 riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/a0f46724fe340bab80dd4a8bf4a9f413c6a294f1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Dominik-Brodowski/hw_random-explicit-ordering-of-initcalls/20220125-051254
        git checkout a0f46724fe340bab80dd4a8bf4a9f413c6a294f1
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:26:26: note: expanded from macro 
'node'
   #define node(root, dir) ((root)->nl_entry.dir == &mm->nodes) ? NULL :        
  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:207:10: note: '?' condition is false
                   next = node(this, next);
                          ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:26:25: note: expanded from macro 
'node'
   #define node(root, dir) ((root)->nl_entry.dir == &mm->nodes) ? NULL :        
  \
                           ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:208:7: note: Assuming 'next' is null
                   if (next && next->type != type) {
                       ^~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:208:12: note: Left side of '&&' is 
false
                   if (next && next->type != type) {
                            ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:215:7: note: Assuming 's' is <= 'e'
                   if (s > e || a < size_min)
                       ^~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:215:7: note: Left side of '||' is 
false
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:215:16: note: Assuming 'a' is >= 
'size_min'
                   if (s > e || a < size_min)
                                ^~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:215:3: note: Taking false branch
                   if (s > e || a < size_min)
                   ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:218:8: note: Assuming 
'__UNIQUE_ID___x265' is >= '__UNIQUE_ID___y266'
                   a  = min(a, size_max);
                        ^
   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))
                            ^~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:218:8: note: '?' condition is false
                   a  = min(a, size_max);
                        ^
   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))
                            ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:222:7: note: Assuming 'c' is 0
                   if (c && !region_tail(mm, this, c))
                       ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:222:9: note: Left side of '&&' is 
false
                   if (c && !region_tail(mm, this, c))
                         ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:225:10: note: Calling 'region_tail'
                   this = region_tail(mm, this, a);
                          ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:165:6: note: Assuming 'size' is not 
equal to field 'length'
           if (a->length == size)
               ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:165:2: note: Taking false branch
           if (a->length == size)
           ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:169:15: note: Assuming 'b' is not 
equal to null
           if (unlikely(b == NULL))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:169:2: note: Taking false branch
           if (unlikely(b == NULL))
           ^
   drivers/gpu/drm/nouveau/nvkm/core/mm.c:178:2: note: Calling 'list_add'
           list_add(&b->nl_entry, &a->nl_entry);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:88:24: note: Passing null pointer value via 3rd 
parameter 'next'
           __list_add(new, head, head->next);
                                 ^~~~~~~~~~
   include/linux/list.h:88:2: note: Calling '__list_add'
           __list_add(new, head, head->next);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:69:6: note: Assuming the condition is false
           if (!__list_add_valid(new, prev, next))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:69:2: note: Taking false branch
           if (!__list_add_valid(new, prev, next))
           ^
   include/linux/list.h:72:13: note: Access to field 'prev' results in a 
dereference of a null pointer (loaded from variable 'next')
           next->prev = new;
           ~~~~       ^
   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.
>> drivers/char/hw_random/core.c:455:4: warning: Value stored to 
>> 'entropy_credit' is never read [clang-analyzer-deadcode.DeadStores]
                           entropy_credit = entropy;
                           ^                ~~~~~~~
   drivers/char/hw_random/core.c:455:4: note: Value stored to 'entropy_credit' 
is never read
                           entropy_credit = entropy;
                           ^                ~~~~~~~
   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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   drivers/char/hw_random/ixp4xx-rng.c:44:17: warning: Value stored to 'dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = &pdev->dev;
                          ^~~   ~~~~~~~~~~
   drivers/char/hw_random/ixp4xx-rng.c:44:17: note: Value stored to 'dev' 
during its initialization is never read
           struct device *dev = &pdev->dev;
                          ^~~   ~~~~~~~~~~
   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.
   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.
   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.
   9 warnings generated.
   Suppressed 9 warnings (9 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 (9 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 (9 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 (9 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 (9 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 (9 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.
   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.
   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.
   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.
   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.
   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.
   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.
   10 warnings generated.
   drivers/gpu/drm/radeon/r100.c:2557:2: warning: Value stored to 'tmp' is 
never read [clang-analyzer-deadcode.DeadStores]
           tmp = RREG32(RADEON_BUS_CNTL);
           ^
   drivers/gpu/drm/radeon/r100.c:2557:2: note: Value stored to 'tmp' is never 
read
   drivers/gpu/drm/radeon/r100.c:2881:3: warning: Value stored to 'tmp' is 
never read [clang-analyzer-deadcode.DeadStores]
                   tmp = RREG32(RADEON_CLOCK_CNTL_DATA);
                   ^
   drivers/gpu/drm/radeon/r100.c:2881:3: note: Value stored to 'tmp' is never 
read
   drivers/gpu/drm/radeon/r100.c:3821:3: warning: 3rd function call argument is 
an uninitialized value [clang-analyzer-core.CallAndMessage]
                   WREG32(R_0003F8_CRTC2_GEN_CNTL, save->CRTC2_GEN_CNTL);
                   ^
   drivers/gpu/drm/radeon/radeon.h:2549:24: note: expanded from macro 'WREG32'
   #define WREG32(reg, v) r100_mm_wreg(rdev, (reg), (v), false)
                          ^
   drivers/gpu/drm/radeon/r100.c:3937:6: note: Assuming the condition is false
           if (rdev->flags & RADEON_IS_PCI)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/entropy_credit +455 drivers/char/hw_random/core.c

844dd05fec172d Michael Buesch    2006-06-26  424  
be4000bc4644d0 Torsten Duwe      2014-06-14  425  static int hwrng_fillfn(void 
*unused)
be4000bc4644d0 Torsten Duwe      2014-06-14  426  {
be4000bc4644d0 Torsten Duwe      2014-06-14  427        long rc;
be4000bc4644d0 Torsten Duwe      2014-06-14  428  
08e97aec700aef Herbert Xu        2019-11-17  429        while 
(!kthread_should_stop()) {
a0f46724fe340b Dominik Brodowski 2022-01-24  430                size_t entropy, 
entropy_credit = 0; /* in 1/1024 of a bit */
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  431                struct hwrng 
*rng;
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  432  
502e9986132b25 Dominik Brodowski 2022-01-24  433                if 
(!current_quality)
502e9986132b25 Dominik Brodowski 2022-01-24  434                        break;
502e9986132b25 Dominik Brodowski 2022-01-24  435  
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  436                rng = 
get_current_rng();
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  437                if (IS_ERR(rng) 
|| !rng)
be4000bc4644d0 Torsten Duwe      2014-06-14  438                        break;
9372b35e11149c Rusty Russell     2014-12-08  439                
mutex_lock(&reading_mutex);
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  440                rc = 
rng_get_data(rng, rng_fillbuf,
be4000bc4644d0 Torsten Duwe      2014-06-14  441                                
  rng_buffer_size(), 1);
9372b35e11149c Rusty Russell     2014-12-08  442                
mutex_unlock(&reading_mutex);
3a2c0ba5ad00c0 Rusty Russell     2014-12-08  443                put_rng(rng);
be4000bc4644d0 Torsten Duwe      2014-06-14  444                if (rc <= 0) {
be4000bc4644d0 Torsten Duwe      2014-06-14  445                        
pr_warn("hwrng: no data available\n");
be4000bc4644d0 Torsten Duwe      2014-06-14  446                        
msleep_interruptible(10000);
be4000bc4644d0 Torsten Duwe      2014-06-14  447                        
continue;
be4000bc4644d0 Torsten Duwe      2014-06-14  448                }
a0f46724fe340b Dominik Brodowski 2022-01-24  449  
a0f46724fe340b Dominik Brodowski 2022-01-24  450                /* If we cannot 
credit at least one bit of entropy,
a0f46724fe340b Dominik Brodowski 2022-01-24  451                 * keep track 
of the remainder for the next iteration
a0f46724fe340b Dominik Brodowski 2022-01-24  452                 */
a0f46724fe340b Dominik Brodowski 2022-01-24  453                entropy = rc * 
current_quality * 8 + entropy_credit;
a0f46724fe340b Dominik Brodowski 2022-01-24  454                if ((entropy >> 
10) == 0)
a0f46724fe340b Dominik Brodowski 2022-01-24 @455                        
entropy_credit = entropy;
a0f46724fe340b Dominik Brodowski 2022-01-24  456  
9372b35e11149c Rusty Russell     2014-12-08  457                /* Outside 
lock, sure, but y'know: randomness. */
be4000bc4644d0 Torsten Duwe      2014-06-14  458                
add_hwgenerator_randomness((void *)rng_fillbuf, rc,
a0f46724fe340b Dominik Brodowski 2022-01-24  459                                
           entropy >> 10);
be4000bc4644d0 Torsten Duwe      2014-06-14  460        }
9dda727d37ff6c Torsten Duwe      2014-06-16  461        hwrng_fill = NULL;
be4000bc4644d0 Torsten Duwe      2014-06-14  462        return 0;
be4000bc4644d0 Torsten Duwe      2014-06-14  463  }
be4000bc4644d0 Torsten Duwe      2014-06-14  464  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to