All of lore.kernel.org
 help / color / mirror / Atom feed
* [weiny2:lm-pks-pmem-for-5.10-v6 17/72] security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)
@ 2020-09-26 22:35 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-09-26 22:35 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
TO: Elena Reshetova <elena.reshetova@intel.com>
CC: Ira Weiny <ira.weiny@intel.com>

tree:   https://github.com/weiny2/linux-kernel.git lm-pks-pmem-for-5.10-v6
head:   b3d5c32178ad9ae450cd7183aee0e8020075d7ad
commit: bf52ce7cb02eebeb85f227f19ad4f9b01f91697a [17/72] keys/trusted: protect trusted keys using PKS
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-m021-20200927 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

New smatch warnings:
security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)

Old smatch warnings:
security/keys/trusted-keys/trusted_tpm1.c:105 TSS_sha1() warn: passing a valid pointer to 'PTR_ERR'
security/keys/trusted-keys/trusted_tpm1.c:125 TSS_rawhmac() warn: passing a valid pointer to 'PTR_ERR'
security/keys/trusted-keys/trusted_tpm1.c:178 TSS_authhmac() warn: passing a valid pointer to 'PTR_ERR'
security/keys/trusted-keys/trusted_tpm1.c:254 TSS_checkhmac1() warn: passing a valid pointer to 'PTR_ERR'
security/keys/trusted-keys/trusted_tpm1.c:347 TSS_checkhmac2() warn: passing a valid pointer to 'PTR_ERR'

vim +/payload +1096 security/keys/trusted-keys/trusted_tpm1.c

d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23   997  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23   998  /*
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23   999   * trusted_instantiate - create a new trusted key
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1000   *
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1001   * Unseal an existing trusted blob or, for a new key, get a
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1002   * random key, then seal and create a trusted key-type key,
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1003   * adding it to the specified keyring.
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1004   *
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1005   * On success, return 0. Otherwise return errno.
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1006   */
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1007  static int trusted_instantiate(struct key *key,
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1008  			       struct key_preparsed_payload *prep)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1009  {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1010  	struct trusted_key_payload *payload = NULL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1011  	struct trusted_key_options *options = NULL;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1012  	size_t datalen = prep->datalen;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1013  	char *datablob;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1014  	int ret = 0;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1015  	int key_cmd;
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1016  	size_t key_len;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1017  	int tpm2;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1018  
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1019  	tpm2 = tpm_is_tpm2(chip);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1020  	if (tpm2 < 0)
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1021  		return tpm2;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1022  
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1023  	if (datalen <= 0 || datalen > 32767 || !prep->data)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1024  		return -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1025  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1026  	datablob = kmalloc(datalen + 1, GFP_KERNEL);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1027  	if (!datablob)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1028  		return -ENOMEM;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1029  	memcpy(datablob, prep->data, datalen);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1030  	datablob[datalen] = '\0';
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1031  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1032  	options = trusted_options_alloc();
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1033  	if (!options) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1034  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1035  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1036  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1037  	payload = trusted_payload_alloc(key);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23 @1038  	if (!payload) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1039  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1040  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1041  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1042  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1043  	key_cmd = datablob_parse(datablob, payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1044  	if (key_cmd < 0) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1045  		ret = key_cmd;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1046  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1047  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1048  
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1049  	if (!options->keyhandle) {
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1050  		ret = -EINVAL;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1051  		goto out;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1052  	}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1053  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1054  	dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1055  	dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1056  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1057  	switch (key_cmd) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1058  	case Opt_load:
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1059  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1060  			ret = tpm2_unseal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1061  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1062  			ret = key_unseal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1063  		dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1064  		dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1065  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1066  			pr_info("trusted_key: key_unseal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1067  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1068  	case Opt_new:
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1069  		key_len = payload->key_len;
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1070  		trusted_key_enable_access();
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1071  		ret = tpm_get_random(chip, payload->key, key_len);
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1072  		trusted_key_disable_access();
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1073  		if (ret != key_len) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1074  			pr_info("trusted_key: key_create failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1075  			goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1076  		}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1077  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1078  			ret = tpm2_seal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1079  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1080  			ret = key_seal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1081  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1082  			pr_info("trusted_key: key_seal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1083  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1084  	default:
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1085  		ret = -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1086  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1087  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1088  	if (!ret && options->pcrlock)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1089  		ret = pcrlock(options->pcrlock);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1090  out:
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1091  	kfree_sensitive(datablob);
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1092  	kfree_sensitive(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1093  	if (!ret)
ee0b31a25a0101 security/keys/trusted.c                   Mimi Zohar      2012-01-17  1094  		rcu_assign_keypointer(key, payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1095  	else
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18 @1096  		trusted_payload_free(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1097  	return ret;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1098  }
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1099  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35615 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [weiny2:lm-pks-pmem-for-5.10-v6 17/72] security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)
@ 2020-09-29  7:31 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2020-09-29  7:31 UTC (permalink / raw)
  To: kbuild

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

tree:   https://github.com/weiny2/linux-kernel.git lm-pks-pmem-for-5.10-v6
head:   b3d5c32178ad9ae450cd7183aee0e8020075d7ad
commit: bf52ce7cb02eebeb85f227f19ad4f9b01f91697a [17/72] keys/trusted: protect trusted keys using PKS
config: i386-randconfig-m021-20200927 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

New smatch warnings:
security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)

vim +/payload +1096 security/keys/trusted-keys/trusted_tpm1.c

cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1007  static int trusted_instantiate(struct key *key,
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1008  			       struct key_preparsed_payload *prep)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1009  {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1010  	struct trusted_key_payload *payload = NULL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1011  	struct trusted_key_options *options = NULL;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1012  	size_t datalen = prep->datalen;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1013  	char *datablob;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1014  	int ret = 0;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1015  	int key_cmd;
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1016  	size_t key_len;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1017  	int tpm2;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1018  
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1019  	tpm2 = tpm_is_tpm2(chip);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1020  	if (tpm2 < 0)
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1021  		return tpm2;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1022  
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1023  	if (datalen <= 0 || datalen > 32767 || !prep->data)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1024  		return -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1025  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1026  	datablob = kmalloc(datalen + 1, GFP_KERNEL);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1027  	if (!datablob)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1028  		return -ENOMEM;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1029  	memcpy(datablob, prep->data, datalen);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1030  	datablob[datalen] = '\0';
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1031  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1032  	options = trusted_options_alloc();
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1033  	if (!options) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1034  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1035  		goto out;

This error path is problematic as well.

d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1036  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1037  	payload = trusted_payload_alloc(key);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23 @1038  	if (!payload) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1039  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1040  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1041  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1042  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1043  	key_cmd = datablob_parse(datablob, payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1044  	if (key_cmd < 0) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1045  		ret = key_cmd;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1046  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1047  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1048  
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1049  	if (!options->keyhandle) {
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1050  		ret = -EINVAL;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1051  		goto out;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1052  	}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1053  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1054  	dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1055  	dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1056  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1057  	switch (key_cmd) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1058  	case Opt_load:
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1059  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1060  			ret = tpm2_unseal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1061  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1062  			ret = key_unseal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1063  		dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1064  		dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1065  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1066  			pr_info("trusted_key: key_unseal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1067  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1068  	case Opt_new:
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1069  		key_len = payload->key_len;
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1070  		trusted_key_enable_access();
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1071  		ret = tpm_get_random(chip, payload->key, key_len);
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1072  		trusted_key_disable_access();
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1073  		if (ret != key_len) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1074  			pr_info("trusted_key: key_create failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1075  			goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1076  		}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1077  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1078  			ret = tpm2_seal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1079  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1080  			ret = key_seal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1081  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1082  			pr_info("trusted_key: key_seal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1083  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1084  	default:
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1085  		ret = -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1086  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1087  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1088  	if (!ret && options->pcrlock)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1089  		ret = pcrlock(options->pcrlock);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1090  out:
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1091  	kfree_sensitive(datablob);
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1092  	kfree_sensitive(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1093  	if (!ret)
ee0b31a25a0101 security/keys/trusted.c                   Mimi Zohar      2012-01-17  1094  		rcu_assign_keypointer(key, payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1095  	else
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18 @1096  		trusted_payload_free(payload);
                                                                                                                             ^^^^^^^
Presumably this will Oops in the caller.

d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1097  	return ret;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1098  }

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35615 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [weiny2:lm-pks-pmem-for-5.10-v6 17/72] security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)
@ 2020-09-29  7:31 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2020-09-29  7:31 UTC (permalink / raw)
  To: kbuild-all

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

tree:   https://github.com/weiny2/linux-kernel.git lm-pks-pmem-for-5.10-v6
head:   b3d5c32178ad9ae450cd7183aee0e8020075d7ad
commit: bf52ce7cb02eebeb85f227f19ad4f9b01f91697a [17/72] keys/trusted: protect trusted keys using PKS
config: i386-randconfig-m021-20200927 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

New smatch warnings:
security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038)

vim +/payload +1096 security/keys/trusted-keys/trusted_tpm1.c

cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1007  static int trusted_instantiate(struct key *key,
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1008  			       struct key_preparsed_payload *prep)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1009  {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1010  	struct trusted_key_payload *payload = NULL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1011  	struct trusted_key_options *options = NULL;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1012  	size_t datalen = prep->datalen;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1013  	char *datablob;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1014  	int ret = 0;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1015  	int key_cmd;
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1016  	size_t key_len;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1017  	int tpm2;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1018  
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1019  	tpm2 = tpm_is_tpm2(chip);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1020  	if (tpm2 < 0)
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1021  		return tpm2;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1022  
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1023  	if (datalen <= 0 || datalen > 32767 || !prep->data)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1024  		return -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1025  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1026  	datablob = kmalloc(datalen + 1, GFP_KERNEL);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1027  	if (!datablob)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1028  		return -ENOMEM;
cf7f601c067994 security/keys/trusted.c                   David Howells   2012-09-13  1029  	memcpy(datablob, prep->data, datalen);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1030  	datablob[datalen] = '\0';
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1031  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1032  	options = trusted_options_alloc();
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1033  	if (!options) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1034  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1035  		goto out;

This error path is problematic as well.

d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1036  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1037  	payload = trusted_payload_alloc(key);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23 @1038  	if (!payload) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1039  		ret = -ENOMEM;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1040  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1041  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1042  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1043  	key_cmd = datablob_parse(datablob, payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1044  	if (key_cmd < 0) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1045  		ret = key_cmd;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1046  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1047  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1048  
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1049  	if (!options->keyhandle) {
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1050  		ret = -EINVAL;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1051  		goto out;
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1052  	}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1053  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1054  	dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1055  	dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1056  
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1057  	switch (key_cmd) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1058  	case Opt_load:
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1059  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1060  			ret = tpm2_unseal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1061  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1062  			ret = key_unseal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1063  		dump_payload(payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1064  		dump_options(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1065  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1066  			pr_info("trusted_key: key_unseal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1067  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1068  	case Opt_new:
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1069  		key_len = payload->key_len;
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1070  		trusted_key_enable_access();
240730437deb21 security/keys/trusted.c                   Roberto Sassu   2019-02-06  1071  		ret = tpm_get_random(chip, payload->key, key_len);
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18  1072  		trusted_key_disable_access();
41ab999c80f1d3 security/keys/trusted.c                   Kent Yoder      2012-06-07  1073  		if (ret != key_len) {
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1074  			pr_info("trusted_key: key_create failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1075  			goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1076  		}
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1077  		if (tpm2)
2e19e10131a08d security/keys/trusted-keys/trusted_tpm1.c Sumit Garg      2019-10-16  1078  			ret = tpm2_seal_trusted(chip, payload, options);
0fe5480303a165 security/keys/trusted.c                   Jarkko Sakkinen 2015-06-26  1079  		else
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1080  			ret = key_seal(payload, options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1081  		if (ret < 0)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1082  			pr_info("trusted_key: key_seal failed (%d)\n", ret);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1083  		break;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1084  	default:
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1085  		ret = -EINVAL;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1086  		goto out;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1087  	}
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1088  	if (!ret && options->pcrlock)
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1089  		ret = pcrlock(options->pcrlock);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1090  out:
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1091  	kfree_sensitive(datablob);
453431a54934d9 security/keys/trusted-keys/trusted_tpm1.c Waiman Long     2020-08-06  1092  	kfree_sensitive(options);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1093  	if (!ret)
ee0b31a25a0101 security/keys/trusted.c                   Mimi Zohar      2012-01-17  1094  		rcu_assign_keypointer(key, payload);
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1095  	else
bf52ce7cb02eeb security/keys/trusted-keys/trusted_tpm1.c Elena Reshetova 2020-09-18 @1096  		trusted_payload_free(payload);
                                                                                                                             ^^^^^^^
Presumably this will Oops in the caller.

d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1097  	return ret;
d00a1c72f7f466 security/keys/trusted_defined.c           Mimi Zohar      2010-11-23  1098  }

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35615 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-09-29  7:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-26 22:35 [weiny2:lm-pks-pmem-for-5.10-v6 17/72] security/keys/trusted-keys/trusted_tpm1.c:1096 trusted_instantiate() error: we previously assumed 'payload' could be null (see line 1038) kernel test robot
2020-09-29  7:31 Dan Carpenter
2020-09-29  7:31 ` Dan Carpenter

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.