Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
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