CC: [email protected]
CC: "GNU/Weeb Mailing List" <[email protected]>
CC: [email protected]
TO: "Jason A. Donenfeld" <[email protected]>

tree:   https://github.com/ammarfaizi2/linux-block crng/random/jd/fast-mix-lfsr
head:   7fbcf700feb7daa3b4afaff1eabf9582ea4d3a0e
commit: be05d87f9b42e54d0db561b26e534922e6004280 [38/41] random: unify early 
init crng load accounting
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
config: microblaze-randconfig-m031-20220213 
(https://download.01.org/0day-ci/archive/20220213/[email protected]/config)
compiler: microblaze-linux-gcc (GCC) 11.2.0

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

New smatch warnings:
drivers/char/random.c:471 crng_pre_init_inject() error: uninitialized symbol 
'flags'.

Old smatch warnings:
drivers/char/random.c:502 crng_pre_init_inject() error: uninitialized symbol 
'flags'.
arch/microblaze/include/asm/thread_info.h:91 current_thread_info() error: 
uninitialized symbol 'sp'.

vim +/flags +471 drivers/char/random.c

c92e040d575a73 Theodore Ts'o      2016-05-04  438  
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  439  /*
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  440   * This function is for 
crng_init < 2 only. It loads entropy directly
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  441   * into the crng's key, 
without going through the input pool. It is,
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  442   * generally speaking, not 
very safe, but we use this only at early
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  443   * boot time when it's 
better to have something there rather than
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  444   * nothing.
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  445   *
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  446   * There are two paths, a 
slow one and a fast one. The slow one
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  447   * hashes the input along 
with the current key. The fast one simply
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  448   * xors it in, and should 
only be used from interrupt context.
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  449   *
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  450   * If account is set, then 
the crng_init_cnt counter is incremented.
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  451   * This shouldn't be set by 
functions like add_device_randomness(),
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  452   * where we can't trust the 
buffer passed to it is guaranteed to be
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  453   * unpredictable (so it 
might not have any entropy at all).
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  454   *
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  455   * Returns the number of 
bytes processed from cp, which is bounded by
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  456   * CRNG_INIT_CNT_THRESH if 
account is true.
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  457   */
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  458  static size_t 
crng_pre_init_inject(const void *cp, size_t len,
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  459                               
   bool fast, bool account)
e192be9d9a3055 Theodore Ts'o      2016-06-12  460  {
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  461       static int 
crng_init_cnt = 0;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  462       unsigned long flags;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  463  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  464       if (fast) {
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  465               if 
(!spin_trylock_irqsave(&base_crng.lock, flags))
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  466                       return 
0;
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  467       } else
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  468               
spin_lock_irqsave(&base_crng.lock, flags);
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  469  
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  470       if (crng_init != 0) {
6abdf17ccd90de Jason A. Donenfeld 2022-02-11 @471               
spin_unlock_irqrestore(&base_crng.lock, flags);
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  472               return 0;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  473       }
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  474  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  475       if (account)
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  476               len = 
min_t(size_t, len, CRNG_INIT_CNT_THRESH - crng_init_cnt);
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  477  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  478       if (fast) {
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  479               const u8 *src = 
cp;
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  480               size_t i;
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  481  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  482               for (i = 0; i < 
len; ++i)
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  483                       
base_crng.key[(crng_init_cnt + i) %
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  484                               
      sizeof(base_crng.key)] ^= src[i];
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  485       } else {
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  486               struct 
blake2s_state hash;
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  487  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  488               
blake2s_init(&hash, sizeof(base_crng.key));
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  489               
blake2s_update(&hash, base_crng.key, sizeof(base_crng.key));
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  490               
blake2s_update(&hash, cp, len);
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  491               
blake2s_final(&hash, base_crng.key);
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  492       }
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  493  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  494       if (account) {
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  495               crng_init_cnt 
+= len;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  496               if 
(crng_init_cnt >= CRNG_INIT_CNT_THRESH) {
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  497                       
++base_crng.generation;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  498                       
crng_init = 1;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  499               }
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  500       }
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  501  
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  502       
spin_unlock_irqrestore(&base_crng.lock, flags);
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  503  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  504       if (crng_init == 1)
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  505               pr_notice("fast 
init done\n");
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  506  
be05d87f9b42e5 Jason A. Donenfeld 2022-02-12  507       return len;
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  508  }
6abdf17ccd90de Jason A. Donenfeld 2022-02-11  509  

:::::: The code at line 471 was first introduced by commit
:::::: 6abdf17ccd90de572fdc0de00526d6cca03b4229 random: group crng functions

:::::: TO: Jason A. Donenfeld <[email protected]>
:::::: CC: Jason A. Donenfeld <[email protected]>

---
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