lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20200612090233.GG4151@kadam>
Date:   Fri, 12 Jun 2020 02:02:33 -0700 (PDT)
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     kbuild@...ts.01.org, Harald Freudenberger <freude@...ux.ibm.com>
Cc:     lkp@...el.com, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org, Vasily Gorbik <gor@...ux.ibm.com>
Subject: drivers/s390/crypto/zcrypt_api.c:986 _zcrypt_send_ep11_cprb() error:
 uninitialized symbol 'pref_weight'.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b29482fde649c72441d5478a4ea2c52c56d97a5e
commit: a7367997abb64b5e5a4f6fe6091629440b10da40 s390/zcrypt: ep11 structs rework, export zcrypt_send_ep11_cprb
config: s390-randconfig-m031-20200611 (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>

New smatch warnings:
drivers/s390/crypto/zcrypt_api.c:986 _zcrypt_send_ep11_cprb() error: uninitialized symbol 'pref_weight'.
drivers/s390/crypto/zcrypt_api.c:1008 _zcrypt_send_ep11_cprb() error: uninitialized symbol 'weight'.

Old smatch warnings:
drivers/s390/crypto/zcrypt_api.c:676 zcrypt_rsa_modexpo() error: uninitialized symbol 'pref_weight'.
drivers/s390/crypto/zcrypt_api.c:694 zcrypt_rsa_modexpo() error: uninitialized symbol 'weight'.
drivers/s390/crypto/zcrypt_api.c:760 zcrypt_rsa_crt() error: uninitialized symbol 'pref_weight'.
drivers/s390/crypto/zcrypt_api.c:778 zcrypt_rsa_crt() error: uninitialized symbol 'weight'.
drivers/s390/crypto/zcrypt_api.c:824 _zcrypt_send_cprb() warn: always true condition '(tdom >= 0) => (0-u16max >= 0)'
drivers/s390/crypto/zcrypt_api.c:846 _zcrypt_send_cprb() error: uninitialized symbol 'pref_weight'.
drivers/s390/crypto/zcrypt_api.c:867 _zcrypt_send_cprb() error: uninitialized symbol 'weight'.
drivers/s390/crypto/zcrypt_api.c:1065 zcrypt_rng() error: uninitialized symbol 'pref_weight'.
drivers/s390/crypto/zcrypt_api.c:1079 zcrypt_rng() error: uninitialized symbol 'weight'.

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a7367997abb64b5e5a4f6fe6091629440b10da40
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout a7367997abb64b5e5a4f6fe6091629440b10da40
vim +/pref_weight +986 drivers/s390/crypto/zcrypt_api.c

a7367997abb64b Harald Freudenberger 2019-08-30   926  static long _zcrypt_send_ep11_cprb(struct ap_perms *perms,
00fab2350e6b91 Harald Freudenberger 2018-09-17   927  				   struct ep11_urb *xcrb)
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   928  {
e28d2af43614eb Ingo Tuchscherer     2016-08-25   929  	struct zcrypt_card *zc, *pref_zc;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   930  	struct zcrypt_queue *zq, *pref_zq;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   931  	struct ep11_target_dev *targets;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   932  	unsigned short target_num;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   933  	unsigned int weight, pref_weight;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   934  	unsigned int func_code;
34a15167739412 Ingo Tuchscherer     2016-08-25   935  	struct ap_message ap_msg;
13b251bdc8b97c Harald Freudenberger 2016-11-25   936  	int qid = 0, rc = -ENODEV;
01396a374c3d31 Harald Freudenberger 2019-02-22   937  	struct module *mod;
13b251bdc8b97c Harald Freudenberger 2016-11-25   938  
13b251bdc8b97c Harald Freudenberger 2016-11-25   939  	trace_s390_zcrypt_req(xcrb, TP_ZSENDEP11CPRB);
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   940  
89a0c0ec0d2e3c Harald Freudenberger 2018-05-28   941  	ap_init_message(&ap_msg);
89a0c0ec0d2e3c Harald Freudenberger 2018-05-28   942  
e28d2af43614eb Ingo Tuchscherer     2016-08-25   943  	target_num = (unsigned short) xcrb->targets_num;
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   944  
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   945  	/* empty list indicates autoselect (all available targets) */
e28d2af43614eb Ingo Tuchscherer     2016-08-25   946  	targets = NULL;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   947  	if (target_num != 0) {
e28d2af43614eb Ingo Tuchscherer     2016-08-25   948  		struct ep11_target_dev __user *uptr;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   949  
e28d2af43614eb Ingo Tuchscherer     2016-08-25   950  		targets = kcalloc(target_num, sizeof(*targets), GFP_KERNEL);
13b251bdc8b97c Harald Freudenberger 2016-11-25   951  		if (!targets) {
913140e221567b Arnd Bergmann        2019-04-08   952  			func_code = 0;
13b251bdc8b97c Harald Freudenberger 2016-11-25   953  			rc = -ENOMEM;
13b251bdc8b97c Harald Freudenberger 2016-11-25   954  			goto out;
13b251bdc8b97c Harald Freudenberger 2016-11-25   955  		}
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   956  
e28d2af43614eb Ingo Tuchscherer     2016-08-25   957  		uptr = (struct ep11_target_dev __force __user *) xcrb->targets;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   958  		if (copy_from_user(targets, uptr,
13b251bdc8b97c Harald Freudenberger 2016-11-25   959  				   target_num * sizeof(*targets))) {
913140e221567b Arnd Bergmann        2019-04-08   960  			func_code = 0;
13b251bdc8b97c Harald Freudenberger 2016-11-25   961  			rc = -EFAULT;
89a0c0ec0d2e3c Harald Freudenberger 2018-05-28   962  			goto out_free;
13b251bdc8b97c Harald Freudenberger 2016-11-25   963  		}
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   964  	}
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   965  
34a15167739412 Ingo Tuchscherer     2016-08-25   966  	rc = get_ep11cprb_fc(xcrb, &ap_msg, &func_code);
34a15167739412 Ingo Tuchscherer     2016-08-25   967  	if (rc)
e28d2af43614eb Ingo Tuchscherer     2016-08-25   968  		goto out_free;
34a15167739412 Ingo Tuchscherer     2016-08-25   969  
e28d2af43614eb Ingo Tuchscherer     2016-08-25   970  	pref_zc = NULL;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   971  	pref_zq = NULL;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   972  	spin_lock(&zcrypt_list_lock);
e28d2af43614eb Ingo Tuchscherer     2016-08-25   973  	for_each_zcrypt_card(zc) {
e28d2af43614eb Ingo Tuchscherer     2016-08-25   974  		/* Check for online EP11 cards */
e28d2af43614eb Ingo Tuchscherer     2016-08-25   975  		if (!zc->online || !(zc->card->functions & 0x04000000))
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   976  			continue;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   977  		/* Check for user selected EP11 card */
e28d2af43614eb Ingo Tuchscherer     2016-08-25   978  		if (targets &&
e28d2af43614eb Ingo Tuchscherer     2016-08-25   979  		    !is_desired_ep11_card(zc->card->id, target_num, targets))
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20   980  			continue;
00fab2350e6b91 Harald Freudenberger 2018-09-17   981  		/* check if device node has admission for this card */
00fab2350e6b91 Harald Freudenberger 2018-09-17   982  		if (!zcrypt_check_card(perms, zc->card->id))
00fab2350e6b91 Harald Freudenberger 2018-09-17   983  			continue;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   984  		/* get weight index of the card device	*/
e28d2af43614eb Ingo Tuchscherer     2016-08-25   985  		weight = speed_idx_ep11(func_code) * zc->speed_rating[SECKEY];
e47de21dd35bad Ingo Tuchscherer     2016-10-14  @986  		if (zcrypt_card_compare(zc, pref_zc, weight, pref_weight))
                                                                                                             ^^^^^^^^^^^
Not initialized on first iteration through the loop.

34a15167739412 Ingo Tuchscherer     2016-08-25   987  			continue;
e28d2af43614eb Ingo Tuchscherer     2016-08-25   988  		for_each_zcrypt_queue(zq, zc) {
e28d2af43614eb Ingo Tuchscherer     2016-08-25   989  			/* check if device is online and eligible */
e28d2af43614eb Ingo Tuchscherer     2016-08-25   990  			if (!zq->online ||
148784246ef2d8 Harald Freudenberger 2016-10-27   991  			    !zq->ops->send_ep11_cprb ||
e28d2af43614eb Ingo Tuchscherer     2016-08-25   992  			    (targets &&
e28d2af43614eb Ingo Tuchscherer     2016-08-25   993  			     !is_desired_ep11_queue(zq->queue->qid,
e28d2af43614eb Ingo Tuchscherer     2016-08-25   994  						    target_num, targets)))
34a15167739412 Ingo Tuchscherer     2016-08-25   995  				continue;
00fab2350e6b91 Harald Freudenberger 2018-09-17   996  			/* check if device node has admission for this queue */
00fab2350e6b91 Harald Freudenberger 2018-09-17   997  			if (!zcrypt_check_queue(perms,
00fab2350e6b91 Harald Freudenberger 2018-09-17   998  						AP_QID_QUEUE(zq->queue->qid)))
00fab2350e6b91 Harald Freudenberger 2018-09-17   999  				continue;
e47de21dd35bad Ingo Tuchscherer     2016-10-14  1000  			if (zcrypt_queue_compare(zq, pref_zq,
e47de21dd35bad Ingo Tuchscherer     2016-10-14  1001  						 weight, pref_weight))
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1002  				continue;
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1003  			pref_zc = zc;
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1004  			pref_zq = zq;
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1005  			pref_weight = weight;
34a15167739412 Ingo Tuchscherer     2016-08-25  1006  		}
34a15167739412 Ingo Tuchscherer     2016-08-25  1007  	}
01396a374c3d31 Harald Freudenberger 2019-02-22 @1008  	pref_zq = zcrypt_pick_queue(pref_zc, pref_zq, &mod, weight);
                                                                                                            ^^^^^^
>From a static analysis perspective it's obvious why it generates a
warning for this, but it's probably wrong.

e28d2af43614eb Ingo Tuchscherer     2016-08-25  1009  	spin_unlock(&zcrypt_list_lock);
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1010  
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1011  	if (!pref_zq) {
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1012  		rc = -ENODEV;
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1013  		goto out_free;
34a15167739412 Ingo Tuchscherer     2016-08-25  1014  	}
34a15167739412 Ingo Tuchscherer     2016-08-25  1015  
13b251bdc8b97c Harald Freudenberger 2016-11-25  1016  	qid = pref_zq->queue->qid;
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1017  	rc = pref_zq->ops->send_ep11_cprb(pref_zq, xcrb, &ap_msg);
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1018  
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1019  	spin_lock(&zcrypt_list_lock);
01396a374c3d31 Harald Freudenberger 2019-02-22  1020  	zcrypt_drop_queue(pref_zc, pref_zq, mod, weight);
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1021  	spin_unlock(&zcrypt_list_lock);
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1022  
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1023  out_free:
e28d2af43614eb Ingo Tuchscherer     2016-08-25  1024  	kfree(targets);
13b251bdc8b97c Harald Freudenberger 2016-11-25  1025  out:
89a0c0ec0d2e3c Harald Freudenberger 2018-05-28  1026  	ap_release_message(&ap_msg);
13b251bdc8b97c Harald Freudenberger 2016-11-25  1027  	trace_s390_zcrypt_rep(xcrb, func_code, rc,
13b251bdc8b97c Harald Freudenberger 2016-11-25  1028  			      AP_QID_CARD(qid), AP_QID_QUEUE(qid));
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20  1029  	return rc;
91f3e3eaba4413 Ingo Tuchscherer     2013-11-20  1030  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (22854 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ