* [hare-nvme:secure-concat.v9 5/10] crypto/hkdf.c:43:5: error: redefinition of 'hkdf_extract'
@ 2024-08-19 16:50 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-08-19 16:50 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: oe-kbuild-all, Sagi Grimberg
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-08-19 16:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-19 16:50 [hare-nvme:secure-concat.v9 5/10] crypto/hkdf.c:43:5: error: redefinition of 'hkdf_extract' 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.