All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Hannes Reinecke <hare@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, Sagi Grimberg <sagi@grimberg.me>
Subject: [hare-nvme:secure-concat.v9 5/10] crypto/hkdf.c:43:5: error: redefinition of 'hkdf_extract'
Date: Tue, 20 Aug 2024 00:50:12 +0800	[thread overview]
Message-ID: <202408200025.RFRSfsHx-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/hare/nvme.git secure-concat.v9
head:   24817e66fba53d9e2722aec6abd8a00b29bf108a
commit: b5aa0d4d46aa77eff72ff274903a705239484de7 [5/10] nvme: add nvme_auth_derive_tls_psk()
config: arm64-randconfig-001-20240819 (https://download.01.org/0day-ci/archive/20240820/202408200025.RFRSfsHx-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240820/202408200025.RFRSfsHx-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408200025.RFRSfsHx-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from crypto/hkdf.c:12:
   include/crypto/hkdf.h: In function 'hkdf_extract':
   include/crypto/hkdf.h:25:17: error: 'ENOTSUP' undeclared (first use in this function); did you mean 'ENOTSUPP'?
      25 |         return -ENOTSUP;
         |                 ^~~~~~~
         |                 ENOTSUPP
   include/crypto/hkdf.h:25:17: note: each undeclared identifier is reported only once for each function it appears in
   include/crypto/hkdf.h: In function 'hkdf_expand':
   include/crypto/hkdf.h:31:17: error: 'ENOTSUP' undeclared (first use in this function); did you mean 'ENOTSUPP'?
      31 |         return -ENOTSUP;
         |                 ^~~~~~~
         |                 ENOTSUPP
   crypto/hkdf.c: At top level:
>> crypto/hkdf.c:43:5: error: redefinition of 'hkdf_extract'
      43 | int hkdf_extract(struct crypto_shash *hmac_tfm, const u8 *ikm,
         |     ^~~~~~~~~~~~
   include/crypto/hkdf.h:20:19: note: previous definition of 'hkdf_extract' with type 'int(struct crypto_shash *, const u8 *, unsigned int,  const u8 *, unsigned int,  u8 *)' {aka 'int(struct crypto_shash *, const unsigned char *, unsigned int,  const unsigned char *, unsigned int,  unsigned char *)'}
      20 | static inline int hkdf_extract(struct crypto_shash *hmac_tfm,
         |                   ^~~~~~~~~~~~
>> crypto/hkdf.c:72:5: error: redefinition of 'hkdf_expand'
      72 | int hkdf_expand(struct crypto_shash *hmac_tfm,
         |     ^~~~~~~~~~~
   include/crypto/hkdf.h:27:19: note: previous definition of 'hkdf_expand' with type 'int(struct crypto_shash *, const u8 *, unsigned int,  u8 *, unsigned int)' {aka 'int(struct crypto_shash *, const unsigned char *, unsigned int,  unsigned char *, unsigned int)'}
      27 | static inline int hkdf_expand(struct crypto_shash *hmac_tfm,
         |                   ^~~~~~~~~~~
--
   In file included from drivers/nvme/common/auth.c:14:
   include/crypto/hkdf.h: In function 'hkdf_extract':
   include/crypto/hkdf.h:25:17: error: 'ENOTSUP' undeclared (first use in this function); did you mean 'ENOTSUPP'?
      25 |         return -ENOTSUP;
         |                 ^~~~~~~
         |                 ENOTSUPP
   include/crypto/hkdf.h:25:17: note: each undeclared identifier is reported only once for each function it appears in
   include/crypto/hkdf.h: In function 'hkdf_expand':
   include/crypto/hkdf.h:31:17: error: 'ENOTSUP' undeclared (first use in this function); did you mean 'ENOTSUPP'?
      31 |         return -ENOTSUP;
         |                 ^~~~~~~
         |                 ENOTSUPP
   include/crypto/hkdf.h: In function 'hkdf_extract':
>> include/crypto/hkdf.h:26:1: warning: control reaches end of non-void function [-Wreturn-type]
      26 | }
         | ^
   include/crypto/hkdf.h: In function 'hkdf_expand':
   include/crypto/hkdf.h:32:1: warning: control reaches end of non-void function [-Wreturn-type]
      32 | }
         | ^


vim +/hkdf_extract +43 crypto/hkdf.c

7cdb18431a4b69 Hannes Reinecke 2024-07-18   14  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   15  /*
7cdb18431a4b69 Hannes Reinecke 2024-07-18   16   * HKDF consists of two steps:
7cdb18431a4b69 Hannes Reinecke 2024-07-18   17   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   18   * 1. HKDF-Extract: extract a pseudorandom key from the input keying material
7cdb18431a4b69 Hannes Reinecke 2024-07-18   19   *    and optional salt.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   20   * 2. HKDF-Expand: expand the pseudorandom key into output keying material of
7cdb18431a4b69 Hannes Reinecke 2024-07-18   21   *    any length, parameterized by an application-specific info string.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   22   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   23   */
7cdb18431a4b69 Hannes Reinecke 2024-07-18   24  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   25  /**
7cdb18431a4b69 Hannes Reinecke 2024-07-18   26   * hkdf_extract - HKDF-Extract (RFC 5869 section 2.2)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   27   * @hmac_tfm: hash context
7cdb18431a4b69 Hannes Reinecke 2024-07-18   28   * @ikm: input keying material
7cdb18431a4b69 Hannes Reinecke 2024-07-18   29   * @ikmlen: length of @ikm
7cdb18431a4b69 Hannes Reinecke 2024-07-18   30   * @salt: input salt value
7cdb18431a4b69 Hannes Reinecke 2024-07-18   31   * @saltlen: length of @salt
7cdb18431a4b69 Hannes Reinecke 2024-07-18   32   * @prk: resulting pseudorandom key
7cdb18431a4b69 Hannes Reinecke 2024-07-18   33   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   34   * Extracts a pseudorandom key @prk from the input keying material
7cdb18431a4b69 Hannes Reinecke 2024-07-18   35   * @ikm with length @ikmlen and salt @salt with length @saltlen.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   36   * The length of @prk is given by the digest size of @hmac_tfm.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   37   * For an 'unsalted' version of HKDF-Extract @salt should be set
7cdb18431a4b69 Hannes Reinecke 2024-07-18   38   * to all zeroes and @saltlen should be set to the length of @prk.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   39   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   40   * Returns 0 on success with the pseudorandom key stored in @prk,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   41   * otherwise a negative error.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   42   */
7cdb18431a4b69 Hannes Reinecke 2024-07-18  @43  int hkdf_extract(struct crypto_shash *hmac_tfm, const u8 *ikm,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   44  		 unsigned int ikmlen, const u8 *salt, unsigned int saltlen,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   45  		 u8 *prk)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   46  {
7cdb18431a4b69 Hannes Reinecke 2024-07-18   47  	int err;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   48  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   49  	err = crypto_shash_setkey(hmac_tfm, salt, saltlen);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   50  	if (!err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   51  		err = crypto_shash_tfm_digest(hmac_tfm, ikm, ikmlen, prk);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   52  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   53  	return err;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   54  }
7cdb18431a4b69 Hannes Reinecke 2024-07-18   55  EXPORT_SYMBOL_GPL(hkdf_extract);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   56  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   57  /*
7cdb18431a4b69 Hannes Reinecke 2024-07-18   58   * hkdf_expand - HKDF-Expand (RFC 5869 section 2.3)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   59   * @hmac_tfm: hash context keyed with pseudorandom key
7cdb18431a4b69 Hannes Reinecke 2024-07-18   60   * @info: application-specific information
7cdb18431a4b69 Hannes Reinecke 2024-07-18   61   * @infolen: length of @info
7cdb18431a4b69 Hannes Reinecke 2024-07-18   62   * @okm: output keying material
7cdb18431a4b69 Hannes Reinecke 2024-07-18   63   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   64   * This expands the pseudorandom key, which was already keyed into @hmac_tfm,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   65   * into @okmlen bytes of output keying material parameterized by the
7cdb18431a4b69 Hannes Reinecke 2024-07-18   66   * application-specific @info of length @infolen bytes.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   67   * This is thread-safe and may be called by multiple threads in parallel.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   68   *
7cdb18431a4b69 Hannes Reinecke 2024-07-18   69   * Returns 0 on success with output keying material stored in @okm,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   70   * negative error number otherwise.
7cdb18431a4b69 Hannes Reinecke 2024-07-18   71   */
7cdb18431a4b69 Hannes Reinecke 2024-07-18  @72  int hkdf_expand(struct crypto_shash *hmac_tfm,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   73  		const u8 *info, unsigned int infolen,
7cdb18431a4b69 Hannes Reinecke 2024-07-18   74  		u8 *okm, unsigned int okmlen)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   75  {
7cdb18431a4b69 Hannes Reinecke 2024-07-18   76  	SHASH_DESC_ON_STACK(desc, hmac_tfm);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   77  	unsigned int i, hashlen = crypto_shash_digestsize(hmac_tfm);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   78  	int err;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   79  	const u8 *prev = NULL;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   80  	u8 counter = 1;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   81  	u8 *tmp;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   82  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   83  	if (WARN_ON(okmlen > 255 * hashlen))
7cdb18431a4b69 Hannes Reinecke 2024-07-18   84  		return -EINVAL;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   85  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   86  	tmp = kzalloc(hashlen, GFP_KERNEL);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   87  	if (!tmp)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   88  		return -ENOMEM;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   89  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   90  	desc->tfm = hmac_tfm;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   91  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   92  	for (i = 0; i < okmlen; i += hashlen) {
7cdb18431a4b69 Hannes Reinecke 2024-07-18   93  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   94  		err = crypto_shash_init(desc);
7cdb18431a4b69 Hannes Reinecke 2024-07-18   95  		if (err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18   96  			goto out;
7cdb18431a4b69 Hannes Reinecke 2024-07-18   97  
7cdb18431a4b69 Hannes Reinecke 2024-07-18   98  		if (prev) {
7cdb18431a4b69 Hannes Reinecke 2024-07-18   99  			err = crypto_shash_update(desc, prev, hashlen);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  100  			if (err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18  101  				goto out;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  102  		}
7cdb18431a4b69 Hannes Reinecke 2024-07-18  103  
7cdb18431a4b69 Hannes Reinecke 2024-07-18  104  		if (info && infolen) {
7cdb18431a4b69 Hannes Reinecke 2024-07-18  105  			err = crypto_shash_update(desc, info, infolen);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  106  			if (err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18  107  				goto out;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  108  		}
7cdb18431a4b69 Hannes Reinecke 2024-07-18  109  
7cdb18431a4b69 Hannes Reinecke 2024-07-18  110  		BUILD_BUG_ON(sizeof(counter) != 1);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  111  		if (okmlen - i < hashlen) {
7cdb18431a4b69 Hannes Reinecke 2024-07-18  112  			err = crypto_shash_finup(desc, &counter, 1, tmp);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  113  			if (err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18  114  				goto out;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  115  			memcpy(&okm[i], tmp, okmlen - i);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  116  			memzero_explicit(tmp, sizeof(tmp));
7cdb18431a4b69 Hannes Reinecke 2024-07-18  117  		} else {
7cdb18431a4b69 Hannes Reinecke 2024-07-18  118  			err = crypto_shash_finup(desc, &counter, 1, &okm[i]);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  119  			if (err)
7cdb18431a4b69 Hannes Reinecke 2024-07-18  120  				goto out;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  121  		}
7cdb18431a4b69 Hannes Reinecke 2024-07-18  122  		counter++;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  123  		prev = &okm[i];
7cdb18431a4b69 Hannes Reinecke 2024-07-18  124  	}
7cdb18431a4b69 Hannes Reinecke 2024-07-18  125  	err = 0;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  126  out:
7cdb18431a4b69 Hannes Reinecke 2024-07-18  127  	if (unlikely(err))
7cdb18431a4b69 Hannes Reinecke 2024-07-18  128  		memzero_explicit(okm, okmlen); /* so caller doesn't need to */
7cdb18431a4b69 Hannes Reinecke 2024-07-18  129  	shash_desc_zero(desc);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  130  	kfree(tmp);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  131  	return err;
7cdb18431a4b69 Hannes Reinecke 2024-07-18  132  }
7cdb18431a4b69 Hannes Reinecke 2024-07-18  133  EXPORT_SYMBOL_GPL(hkdf_expand);
7cdb18431a4b69 Hannes Reinecke 2024-07-18  134  

:::::: The code at line 43 was first introduced by commit
:::::: 7cdb18431a4b69e4912fa880449c256e92f3a30d crypto,fs: Separate out hkdf_extract() and hkdf_expand()

:::::: TO: Hannes Reinecke <hare@kernel.org>
:::::: CC: Hannes Reinecke <hare@kernel.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2024-08-19 16:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202408200025.RFRSfsHx-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=hare@kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=sagi@grimberg.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.