All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/nvme/target/auth.c:25:23: warning: use of uninitialized value '<unknown>' [CWE-457]
@ 2022-09-03 19:20 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-09-03 19:20 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 10179 bytes --]

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: drivers/nvme/target/auth.c:25:23: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]"
:::::: 

BCC: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Hannes Reinecke <hare@suse.de>
CC: Jens Axboe <axboe@kernel.dk>
CC: Sagi Grimberg <sagi@grimberg.me>
CC: Christoph Hellwig <hch@lst.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d895ec7938c431fe61a731939da76a6461bc6133
commit: db1312dd95488b5e6ff362ff66fcf953a46b1821 nvmet: implement basic In-Band Authentication
date:   5 weeks ago
:::::: branch date: 19 hours ago
:::::: commit date: 5 weeks ago
config: arm-randconfig-c002-20220830 (https://download.01.org/0day-ci/archive/20220904/202209040308.XtATabfm-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=db1312dd95488b5e6ff362ff66fcf953a46b1821
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout db1312dd95488b5e6ff362ff66fcf953a46b1821
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

gcc_analyzer warnings: (new ones prefixed by >>)
   drivers/nvme/target/auth.c: In function 'nvmet_auth_set_key':
>> drivers/nvme/target/auth.c:25:23: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
      25 |         unsigned char key_hash;
         |                       ^~~~~~~~
     'nvmet_auth_set_key': event 1
       |
       |   25 |         unsigned char key_hash;
       |      |                       ^~~~~~~~
       |      |                       |
       |      |                       (1) use of uninitialized value '<unknown>' here
       |
   In file included from include/linux/printk.h:573,
                    from include/linux/kernel.h:29,
                    from include/linux/cpumask.h:10,
                    from include/linux/mm_types_task.h:14,
                    from include/linux/mm_types.h:5,
                    from include/linux/buildid.h:5,
                    from include/linux/module.h:14,
                    from drivers/nvme/target/auth.c:8:
   drivers/nvme/target/auth.c: In function 'nvmet_setup_auth':
   drivers/nvme/target/auth.c:129:32: warning: dereference of NULL '*ctrl.ctrl_key' [CWE-476] [-Wanalyzer-null-dereference]
     129 |                  ctrl->ctrl_key->hash > 0 ?
         |                  ~~~~~~~~~~~~~~^~~~~~
   include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
     134 |                 func(&id, ##__VA_ARGS__);               \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:162:9: note: in expansion of macro '_dynamic_func_call'
     162 |         _dynamic_func_call(fmt, __dynamic_pr_debug,             \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/printk.h:588:9: note: in expansion of macro 'dynamic_pr_debug'
     588 |         dynamic_pr_debug(fmt, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~
   drivers/nvme/target/auth.c:128:9: note: in expansion of macro 'pr_debug'
     128 |         pr_debug("%s: using ctrl hash %s key %*ph\n", __func__,
         |         ^~~~~~~~
     'nvmet_setup_auth': events 1-3
       |
       |   65 |         if (nvmet_is_disc_subsys(ctrl->subsys))
       |      |            ^
       |      |            |
       |      |            (1) following 'false' branch...
       |......
       |   68 |         if (ctrl->subsys->allow_any_host)
       |      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |            |            |
       |      |            |            (2) ...to here
       |      |            (3) following 'false' branch...
       |
     'nvmet_setup_auth': event 4
       |
       |include/linux/container_of.h:18:15:
       |   18 |         void *__mptr = (void *)(ptr);                                   \
       |      |               ^~~~~~
       |      |               |
       |      |               (4) ...to here
   include/linux/list.h:520:9: note: in expansion of macro 'container_of'
       |  520 |         container_of(ptr, type, member)
       |      |         ^~~~~~~~~~~~
   include/linux/list.h:531:9: note: in expansion of macro 'list_entry'
       |  531 |         list_entry((ptr)->next, type, member)
       |      |         ^~~~~~~~~~
   include/linux/list.h:674:20: note: in expansion of macro 'list_first_entry'
       |  674 |         for (pos = list_first_entry(head, typeof(*pos), member);        \
       |      |                    ^~~~~~~~~~~~~~~~
   drivers/nvme/target/auth.c:71:9: note: in expansion of macro 'list_for_each_entry'
       |   71 |         list_for_each_entry(p, &ctrl->subsys->hosts, entry) {
       |      |         ^~~~~~~~~~~~~~~~~~~
       |
     'nvmet_setup_auth': event 5
       |
       |include/linux/list.h:675:14:
       |  675 |              !list_entry_is_head(pos, head, member);                    \
       |      |              ^
       |      |              |
       |      |              (5) following 'true' branch...
   drivers/nvme/target/auth.c:71:9: note: in expansion of macro 'list_for_each_entry'
       |   71 |         list_for_each_entry(p, &ctrl->subsys->hosts, entry) {
       |      |         ^~~~~~~~~~~~~~~~~~~
       |
     'nvmet_setup_auth': event 6
       |
       |include/linux/dynamic_debug.h:126:28:
       |  126 |         unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
       |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
       |      |                                             ^
   include/linux/dynamic_debug.h:133:13: note: in expansion of macro 'DYNAMIC_DEBUG_BRANCH'
       |  133 |         if (DYNAMIC_DEBUG_BRANCH(id))                   \
       |      |             ^~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:152:9: note: in expansion of macro '__dynamic_func_call'
       |  152 |         __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
       |      |         ^~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:162:9: note: in expansion of macro '_dynamic_func_call'
       |  162 |         _dynamic_func_call(fmt, __dynamic_pr_debug,             \
       |      |         ^~~~~~~~~~~~~~~~~~
   include/linux/printk.h:588:9: note: in expansion of macro 'dynamic_pr_debug'
       |  588 |         dynamic_pr_debug(fmt, ##__VA_ARGS__)
       |      |         ^~~~~~~~~~~~~~~~
   drivers/nvme/target/auth.c:72:17: note: in expansion of macro 'pr_debug'
       |   72 |                 pr_debug("check %s\n", nvmet_host_name(p->host));
       |      |                 ^~~~~~~~
       |

vim +25 drivers/nvme/target/auth.c

db1312dd95488b Hannes Reinecke 2022-06-27  21  
db1312dd95488b Hannes Reinecke 2022-06-27  22  int nvmet_auth_set_key(struct nvmet_host *host, const char *secret,
db1312dd95488b Hannes Reinecke 2022-06-27  23  		       bool set_ctrl)
db1312dd95488b Hannes Reinecke 2022-06-27  24  {
db1312dd95488b Hannes Reinecke 2022-06-27 @25  	unsigned char key_hash;
db1312dd95488b Hannes Reinecke 2022-06-27  26  	char *dhchap_secret;
db1312dd95488b Hannes Reinecke 2022-06-27  27  
db1312dd95488b Hannes Reinecke 2022-06-27  28  	if (sscanf(secret, "DHHC-1:%hhd:%*s", &key_hash) != 1)
db1312dd95488b Hannes Reinecke 2022-06-27  29  		return -EINVAL;
db1312dd95488b Hannes Reinecke 2022-06-27  30  	if (key_hash > 3) {
db1312dd95488b Hannes Reinecke 2022-06-27  31  		pr_warn("Invalid DH-HMAC-CHAP hash id %d\n",
db1312dd95488b Hannes Reinecke 2022-06-27  32  			 key_hash);
db1312dd95488b Hannes Reinecke 2022-06-27  33  		return -EINVAL;
db1312dd95488b Hannes Reinecke 2022-06-27  34  	}
db1312dd95488b Hannes Reinecke 2022-06-27  35  	if (key_hash > 0) {
db1312dd95488b Hannes Reinecke 2022-06-27  36  		/* Validate selected hash algorithm */
db1312dd95488b Hannes Reinecke 2022-06-27  37  		const char *hmac = nvme_auth_hmac_name(key_hash);
db1312dd95488b Hannes Reinecke 2022-06-27  38  
db1312dd95488b Hannes Reinecke 2022-06-27  39  		if (!crypto_has_shash(hmac, 0, 0)) {
db1312dd95488b Hannes Reinecke 2022-06-27  40  			pr_err("DH-HMAC-CHAP hash %s unsupported\n", hmac);
db1312dd95488b Hannes Reinecke 2022-06-27  41  			return -ENOTSUPP;
db1312dd95488b Hannes Reinecke 2022-06-27  42  		}
db1312dd95488b Hannes Reinecke 2022-06-27  43  	}
db1312dd95488b Hannes Reinecke 2022-06-27  44  	dhchap_secret = kstrdup(secret, GFP_KERNEL);
db1312dd95488b Hannes Reinecke 2022-06-27  45  	if (!dhchap_secret)
db1312dd95488b Hannes Reinecke 2022-06-27  46  		return -ENOMEM;
db1312dd95488b Hannes Reinecke 2022-06-27  47  	if (set_ctrl) {
db1312dd95488b Hannes Reinecke 2022-06-27  48  		host->dhchap_ctrl_secret = strim(dhchap_secret);
db1312dd95488b Hannes Reinecke 2022-06-27  49  		host->dhchap_ctrl_key_hash = key_hash;
db1312dd95488b Hannes Reinecke 2022-06-27  50  	} else {
db1312dd95488b Hannes Reinecke 2022-06-27  51  		host->dhchap_secret = strim(dhchap_secret);
db1312dd95488b Hannes Reinecke 2022-06-27  52  		host->dhchap_key_hash = key_hash;
db1312dd95488b Hannes Reinecke 2022-06-27  53  	}
db1312dd95488b Hannes Reinecke 2022-06-27  54  	return 0;
db1312dd95488b Hannes Reinecke 2022-06-27  55  }
db1312dd95488b Hannes Reinecke 2022-06-27  56  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-03 19:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-03 19:20 drivers/nvme/target/auth.c:25:23: warning: use of uninitialized value '<unknown>' [CWE-457] 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.