From: kernel test robot <lkp@intel.com>
To: Hannes Reinecke <hare@suse.de>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [hare-nvme:nvme-fpin.v3 6/20] drivers/nvme/common/keyring.c:343:55: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int')
Date: Wed, 7 May 2025 14:30:21 +0800 [thread overview]
Message-ID: <202505071455.a3zW7mZN-lkp@intel.com> (raw)
Hi Hannes,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/hare/nvme.git nvme-fpin.v3
head: 931611be0f664cca44e6df3a27f302d0a27a96b9
commit: ae80ff8183abc08a2cf54506e3b67eba4d36588a [6/20] nvme-auth: switch to use 'struct key'
config: arm-randconfig-002-20250429 (https://download.01.org/0day-ci/archive/20250507/202505071455.a3zW7mZN-lkp@intel.com/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250507/202505071455.a3zW7mZN-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/202505071455.a3zW7mZN-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/nvme/common/keyring.c:343:55: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
343 | pr_debug("%s: Invalid data length %lu\n", __func__, datalen);
| ~~~ ^~~~~~~
| %zu
include/linux/printk.h:637:38: note: expanded from macro 'pr_debug'
637 | no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:135:18: note: expanded from macro 'no_printk'
135 | _printk(fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
1 warning generated.
vim +343 drivers/nvme/common/keyring.c
da153105b999dd Hannes Reinecke 2023-03-20 292
da153105b999dd Hannes Reinecke 2023-03-20 293 /**
da153105b999dd Hannes Reinecke 2023-03-20 294 * nvme_dhchap_psk_preparse - prepare DH-HMAC-CHAP key data
da153105b999dd Hannes Reinecke 2023-03-20 295 * @prep: preparsed payload of the key data
da153105b999dd Hannes Reinecke 2023-03-20 296 *
da153105b999dd Hannes Reinecke 2023-03-20 297 * Decode the DH-HMAC-CHAP key data passed in in @prep and
da153105b999dd Hannes Reinecke 2023-03-20 298 * store the resulting binary data. The binary data includes
da153105b999dd Hannes Reinecke 2023-03-20 299 * space for the CRC, the version, and the hmac identifier,
da153105b999dd Hannes Reinecke 2023-03-20 300 * but the data length is just the key data without the CRC.
da153105b999dd Hannes Reinecke 2023-03-20 301 * This allows the user to read the key data via the
da153105b999dd Hannes Reinecke 2023-03-20 302 * 'user_read()' function, but also to export the full
da153105b999dd Hannes Reinecke 2023-03-20 303 * key data including CRC via the 'read' callback from the key type.
da153105b999dd Hannes Reinecke 2023-03-20 304 */
da153105b999dd Hannes Reinecke 2023-03-20 305 static int nvme_dhchap_psk_preparse(struct key_preparsed_payload *prep)
da153105b999dd Hannes Reinecke 2023-03-20 306 {
da153105b999dd Hannes Reinecke 2023-03-20 307 struct user_key_payload *upayload;
da153105b999dd Hannes Reinecke 2023-03-20 308 size_t datalen = prep->datalen, keylen;
da153105b999dd Hannes Reinecke 2023-03-20 309 int ret;
da153105b999dd Hannes Reinecke 2023-03-20 310 u32 crc;
da153105b999dd Hannes Reinecke 2023-03-20 311 u8 version, hmac;
da153105b999dd Hannes Reinecke 2023-03-20 312
da153105b999dd Hannes Reinecke 2023-03-20 313 if (!prep->data) {
da153105b999dd Hannes Reinecke 2023-03-20 314 pr_debug("%s: Empty data", __func__);
da153105b999dd Hannes Reinecke 2023-03-20 315 prep->payload.data[0] = NULL;
da153105b999dd Hannes Reinecke 2023-03-20 316 prep->quotalen = 0;
da153105b999dd Hannes Reinecke 2023-03-20 317 return -EINVAL;
da153105b999dd Hannes Reinecke 2023-03-20 318 }
da153105b999dd Hannes Reinecke 2023-03-20 319
da153105b999dd Hannes Reinecke 2023-03-20 320 if (sscanf(prep->data, "DHHC-%01hhu:%02hhu:%*s", &version, &hmac) != 2) {
da153105b999dd Hannes Reinecke 2023-03-20 321 pr_debug("%s: invalid key data '%s'\n", __func__,
da153105b999dd Hannes Reinecke 2023-03-20 322 (char *)prep->data);
da153105b999dd Hannes Reinecke 2023-03-20 323 prep->payload.data[0] = NULL;
da153105b999dd Hannes Reinecke 2023-03-20 324 prep->quotalen = 0;
da153105b999dd Hannes Reinecke 2023-03-20 325 return -EINVAL;
da153105b999dd Hannes Reinecke 2023-03-20 326 }
da153105b999dd Hannes Reinecke 2023-03-20 327
da153105b999dd Hannes Reinecke 2023-03-20 328 /* skip header and final ':' character */
da153105b999dd Hannes Reinecke 2023-03-20 329 datalen -= 11;
da153105b999dd Hannes Reinecke 2023-03-20 330
da153105b999dd Hannes Reinecke 2023-03-20 331 /* keylen is the key length, 4 bytes CRC, 1 byte version, and 1 byte HMAC identifier */
da153105b999dd Hannes Reinecke 2023-03-20 332 switch (datalen) {
da153105b999dd Hannes Reinecke 2023-03-20 333 case 48:
da153105b999dd Hannes Reinecke 2023-03-20 334 keylen = 38;
da153105b999dd Hannes Reinecke 2023-03-20 335 break;
da153105b999dd Hannes Reinecke 2023-03-20 336 case 72:
da153105b999dd Hannes Reinecke 2023-03-20 337 keylen = 54;
da153105b999dd Hannes Reinecke 2023-03-20 338 break;
da153105b999dd Hannes Reinecke 2023-03-20 339 case 92:
da153105b999dd Hannes Reinecke 2023-03-20 340 keylen = 70;
da153105b999dd Hannes Reinecke 2023-03-20 341 break;
da153105b999dd Hannes Reinecke 2023-03-20 342 default:
da153105b999dd Hannes Reinecke 2023-03-20 @343 pr_debug("%s: Invalid data length %lu\n", __func__, datalen);
da153105b999dd Hannes Reinecke 2023-03-20 344 prep->payload.data[0] = NULL;
da153105b999dd Hannes Reinecke 2023-03-20 345 prep->quotalen = 0;
da153105b999dd Hannes Reinecke 2023-03-20 346 return -EINVAL;
da153105b999dd Hannes Reinecke 2023-03-20 347 }
da153105b999dd Hannes Reinecke 2023-03-20 348
da153105b999dd Hannes Reinecke 2023-03-20 349 upayload = kzalloc(sizeof(*upayload) + keylen, GFP_KERNEL);
da153105b999dd Hannes Reinecke 2023-03-20 350 if (!upayload) {
da153105b999dd Hannes Reinecke 2023-03-20 351 prep->payload.data[0] = NULL;
da153105b999dd Hannes Reinecke 2023-03-20 352 prep->quotalen = 0;
da153105b999dd Hannes Reinecke 2023-03-20 353 return -ENOMEM;
da153105b999dd Hannes Reinecke 2023-03-20 354 }
da153105b999dd Hannes Reinecke 2023-03-20 355
da153105b999dd Hannes Reinecke 2023-03-20 356 /* decode the data */
da153105b999dd Hannes Reinecke 2023-03-20 357 prep->quotalen = keylen;
da153105b999dd Hannes Reinecke 2023-03-20 358 prep->payload.data[0] = upayload;
da153105b999dd Hannes Reinecke 2023-03-20 359 ret = base64_decode(prep->data + 10, datalen, upayload->data);
da153105b999dd Hannes Reinecke 2023-03-20 360 if (ret < 0) {
da153105b999dd Hannes Reinecke 2023-03-20 361 pr_debug("%s: Failed to decode key %s\n",
da153105b999dd Hannes Reinecke 2023-03-20 362 __func__, (char *)prep->data + 10);
da153105b999dd Hannes Reinecke 2023-03-20 363 return ret;
da153105b999dd Hannes Reinecke 2023-03-20 364 }
da153105b999dd Hannes Reinecke 2023-03-20 365 ret -= 4;
da153105b999dd Hannes Reinecke 2023-03-20 366 crc = ~crc32(~0, upayload->data, ret);
da153105b999dd Hannes Reinecke 2023-03-20 367 if (get_unaligned_le32(upayload->data + ret) != crc) {
da153105b999dd Hannes Reinecke 2023-03-20 368 pr_debug("%s: CRC mismatch for key\n", __func__);
da153105b999dd Hannes Reinecke 2023-03-20 369 /* CRC mismatch */
da153105b999dd Hannes Reinecke 2023-03-20 370 return -EKEYREJECTED;
da153105b999dd Hannes Reinecke 2023-03-20 371 }
da153105b999dd Hannes Reinecke 2023-03-20 372 upayload->data[ret + 4] = version;
da153105b999dd Hannes Reinecke 2023-03-20 373 upayload->data[ret + 5] = hmac;
da153105b999dd Hannes Reinecke 2023-03-20 374 upayload->datalen = ret;
da153105b999dd Hannes Reinecke 2023-03-20 375 return 0;
da153105b999dd Hannes Reinecke 2023-03-20 376 }
da153105b999dd Hannes Reinecke 2023-03-20 377
:::::: The code at line 343 was first introduced by commit
:::::: da153105b999dda340dde78bba86e7335065c9b0 nvme-keyring: add 'dhchap' key type
:::::: TO: Hannes Reinecke <hare@suse.de>
:::::: CC: Hannes Reinecke <hare@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2025-05-07 6:31 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=202505071455.a3zW7mZN-lkp@intel.com \
--to=lkp@intel.com \
--cc=hare@suse.de \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox