Re: [PATCH v43 05/15] LRNG - CPU entropy source

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi "Stephan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on herbert-cryptodev-2.6/master herbert-crypto-2.6/master v5.16-rc2 next-20211118]
[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/Stephan-M-ller/dev-random-a-new-approach/20211122-005114
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git f4d77525679e289d4976ca03b620ac4cc5403205
config: alpha-allyesconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 11.2.0
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
        # https://github.com/0day-ci/linux/commit/4db9c892c1827b896be5479eeb9cc4ac0d0a87b5
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Stephan-M-ller/dev-random-a-new-approach/20211122-005114
        git checkout 4db9c892c1827b896be5479eeb9cc4ac0d0a87b5
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=alpha 

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

All warnings (new ones prefixed by >>):

>> drivers/char/lrng/lrng_es_archrandom.c:81:1: warning: 'inline' is not at beginning of declaration [-Wold-style-declaration]
      81 | static u32 inline lrng_get_arch_data_compress(u8 *outbuf, u32 requested_bits,
         | ^~~~~~


vim +/inline +81 drivers/char/lrng/lrng_es_archrandom.c

    80	
  > 81	static u32 inline lrng_get_arch_data_compress(u8 *outbuf, u32 requested_bits,
    82						      u32 data_multiplier)
    83	{
    84		SHASH_DESC_ON_STACK(shash, NULL);
    85		const struct lrng_crypto_cb *crypto_cb;
    86		struct lrng_drng *drng = lrng_drng_init_instance();
    87		unsigned long flags;
    88		u32 ent_bits = 0, i, partial_bits = 0,
    89		    full_bits = requested_bits * data_multiplier;
    90		void *hash;
    91	
    92		/* Calculate oversampling for SP800-90C */
    93		if (lrng_sp80090c_compliant()) {
    94			/* Complete amount of bits to be pulled */
    95			full_bits += CONFIG_LRNG_OVERSAMPLE_ES_BITS * data_multiplier;
    96			/* Full blocks that will be pulled */
    97			data_multiplier = full_bits / requested_bits;
    98			/* Partial block in bits to be pulled */
    99			partial_bits = full_bits - (data_multiplier * requested_bits);
   100		}
   101	
   102		lrng_hash_lock(drng, &flags);
   103		crypto_cb = drng->crypto_cb;
   104		hash = drng->hash;
   105	
   106		if (crypto_cb->lrng_hash_init(shash, hash))
   107			goto out;
   108	
   109		/* Hash all data from the CPU entropy source */
   110		for (i = 0; i < data_multiplier; i++) {
   111			ent_bits = lrng_get_arch_data(outbuf, requested_bits);
   112			if (!ent_bits)
   113				goto out;
   114	
   115			if (crypto_cb->lrng_hash_update(shash, outbuf, ent_bits >> 3))
   116				goto err;
   117		}
   118	
   119		/* Hash partial block, if applicable */
   120		ent_bits = lrng_get_arch_data(outbuf, partial_bits);
   121		if (ent_bits &&
   122		    crypto_cb->lrng_hash_update(shash, outbuf, ent_bits >> 3))
   123			goto err;
   124	
   125		pr_debug("pulled %u bits from CPU RNG entropy source\n", full_bits);
   126	
   127		/* Generate the compressed data to be returned to the caller */
   128		ent_bits = crypto_cb->lrng_hash_digestsize(hash) << 3;
   129		if (requested_bits < ent_bits) {
   130			u8 digest[LRNG_MAX_DIGESTSIZE];
   131	
   132			if (crypto_cb->lrng_hash_final(shash, digest))
   133				goto err;
   134	
   135			/* Truncate output data to requested size */
   136			memcpy(outbuf, digest, requested_bits >> 3);
   137			memzero_explicit(digest, crypto_cb->lrng_hash_digestsize(hash));
   138			ent_bits = requested_bits;
   139		} else {
   140			if (crypto_cb->lrng_hash_final(shash, outbuf))
   141				goto err;
   142		}
   143	
   144	out:
   145		crypto_cb->lrng_hash_desc_zero(shash);
   146		lrng_hash_unlock(drng, flags);
   147		return ent_bits;
   148	
   149	err:
   150		ent_bits = 0;
   151		goto out;
   152	}
   153	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux