All of lore.kernel.org
 help / color / mirror / Atom feed
* [openeuler:OLK-6.6 3557/3557] security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
@ 2025-12-21  5:45 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-12-21  5:45 UTC (permalink / raw)
  To: kernel, zgzxx; +Cc: oe-kbuild-all

tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 5fbe16a682d5af0c2f7145096851e31e3c921d64 [3557/3557] ima: Execute parser to upload digest lists not recognizable by the kernel
config: arm64-randconfig-r132-20251218 (https://download.01.org/0day-ci/archive/20251221/202512211327.X52XldqR-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512211327.X52XldqR-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/202512211327.X52XldqR-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
   security/integrity/ima/ima_digest_list.c:165:42: sparse: sparse: cast to restricted __le16
   security/integrity/ima/ima_digest_list.c:166:37: sparse: sparse: cast to restricted __le16
>> security/integrity/ima/ima_digest_list.c:167:38: sparse: sparse: cast to restricted __le32
   security/integrity/ima/ima_digest_list.c:168:40: sparse: sparse: cast to restricted __le32
>> security/integrity/ima/ima_digest_list.c:416:20: sparse: sparse: symbol 'parser_task' was not declared. Should it be static?

vim +164 security/integrity/ima/ima_digest_list.c

b3fef06570ef2b Roberto Sassu 2023-09-12  138  
b3fef06570ef2b Roberto Sassu 2023-09-12  139  int ima_parse_compact_list(loff_t size, void *buf, int op)
b3fef06570ef2b Roberto Sassu 2023-09-12  140  {
b3fef06570ef2b Roberto Sassu 2023-09-12  141  	u8 *digest;
b3fef06570ef2b Roberto Sassu 2023-09-12  142  	void *bufp = buf, *bufendp = buf + size;
b3fef06570ef2b Roberto Sassu 2023-09-12  143  	struct compact_list_hdr *hdr;
b3fef06570ef2b Roberto Sassu 2023-09-12  144  	size_t digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12  145  	int ret = 0, i;
b3fef06570ef2b Roberto Sassu 2023-09-12  146  
80701e75d21f48 Roberto Sassu 2023-09-12  147  	if (!(ima_digest_list_actions & ima_policy_flag))
80701e75d21f48 Roberto Sassu 2023-09-12  148  		return -EACCES;
80701e75d21f48 Roberto Sassu 2023-09-12  149  
b3fef06570ef2b Roberto Sassu 2023-09-12  150  	while (bufp < bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  151  		if (bufp + sizeof(*hdr) > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  152  			pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  153  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  154  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  155  
b3fef06570ef2b Roberto Sassu 2023-09-12  156  		hdr = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12  157  
b3fef06570ef2b Roberto Sassu 2023-09-12  158  		if (hdr->version != 1) {
b3fef06570ef2b Roberto Sassu 2023-09-12  159  			pr_err("compact list, unsupported version\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  160  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  161  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  162  
b3fef06570ef2b Roberto Sassu 2023-09-12  163  		if (ima_canonical_fmt) {
b3fef06570ef2b Roberto Sassu 2023-09-12 @164  			hdr->type = le16_to_cpu(hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  165  			hdr->modifiers = le16_to_cpu(hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12  166  			hdr->algo = le16_to_cpu(hdr->algo);
b3fef06570ef2b Roberto Sassu 2023-09-12 @167  			hdr->count = le32_to_cpu(hdr->count);
b3fef06570ef2b Roberto Sassu 2023-09-12  168  			hdr->datalen = le32_to_cpu(hdr->datalen);
b3fef06570ef2b Roberto Sassu 2023-09-12  169  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  170  
b3fef06570ef2b Roberto Sassu 2023-09-12  171  		if (hdr->algo >= HASH_ALGO__LAST)
b3fef06570ef2b Roberto Sassu 2023-09-12  172  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  173  
b3fef06570ef2b Roberto Sassu 2023-09-12  174  		digest_len = hash_digest_size[hdr->algo];
b3fef06570ef2b Roberto Sassu 2023-09-12  175  
b3fef06570ef2b Roberto Sassu 2023-09-12  176  		if (hdr->type >= COMPACT__LAST) {
b3fef06570ef2b Roberto Sassu 2023-09-12  177  			pr_err("compact list, invalid type %d\n", hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  178  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  179  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  180  
b3fef06570ef2b Roberto Sassu 2023-09-12  181  		bufp += sizeof(*hdr);
b3fef06570ef2b Roberto Sassu 2023-09-12  182  
b3fef06570ef2b Roberto Sassu 2023-09-12  183  		for (i = 0; i < hdr->count; i++) {
b3fef06570ef2b Roberto Sassu 2023-09-12  184  			if (bufp + digest_len > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  185  				pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  186  				return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  187  			}
b3fef06570ef2b Roberto Sassu 2023-09-12  188  
b3fef06570ef2b Roberto Sassu 2023-09-12  189  			digest = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12  190  			bufp += digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12  191  
b3fef06570ef2b Roberto Sassu 2023-09-12  192  			if (op == DIGEST_LIST_OP_ADD)
b3fef06570ef2b Roberto Sassu 2023-09-12  193  				ret = ima_add_digest_data_entry(digest,
b3fef06570ef2b Roberto Sassu 2023-09-12  194  					hdr->algo, hdr->type, hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12  195  			else if (op == DIGEST_LIST_OP_DEL)
b3fef06570ef2b Roberto Sassu 2023-09-12  196  				ima_del_digest_data_entry(digest, hdr->algo,
b3fef06570ef2b Roberto Sassu 2023-09-12  197  					hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  198  			if (ret < 0 && ret != -EEXIST)
b3fef06570ef2b Roberto Sassu 2023-09-12  199  				return ret;
b3fef06570ef2b Roberto Sassu 2023-09-12  200  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  201  
b3fef06570ef2b Roberto Sassu 2023-09-12  202  		if (i != hdr->count ||
b3fef06570ef2b Roberto Sassu 2023-09-12  203  		    bufp != (void *)hdr + sizeof(*hdr) + hdr->datalen) {
b3fef06570ef2b Roberto Sassu 2023-09-12  204  			pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  205  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  206  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  207  	}
b3fef06570ef2b Roberto Sassu 2023-09-12  208  
b3fef06570ef2b Roberto Sassu 2023-09-12  209  	return bufp - buf;
b3fef06570ef2b Roberto Sassu 2023-09-12  210  }
80701e75d21f48 Roberto Sassu 2023-09-12  211  

:::::: The code at line 164 was first introduced by commit
:::::: b3fef06570ef2b61dd7181e5c1d128bfcbf6b2ef ima: Add parser of compact digest list

:::::: TO: Roberto Sassu <roberto.sassu@huawei.com>
:::::: CC: zgzxx <zhangguangzhi3@huawei.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread
* [openeuler:OLK-6.6 3557/3557] security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
@ 2025-12-22 23:25 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-12-22 23:25 UTC (permalink / raw)
  To: kernel, zgzxx; +Cc: oe-kbuild-all

tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   c098fa18c07cc52100a52db8fd0c2900461888c9
commit: 5fbe16a682d5af0c2f7145096851e31e3c921d64 [3557/3557] ima: Execute parser to upload digest lists not recognizable by the kernel
config: arm64-randconfig-r132-20251218 (https://download.01.org/0day-ci/archive/20251223/202512230715.3UJUkD3z-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251223/202512230715.3UJUkD3z-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/202512230715.3UJUkD3z-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
   security/integrity/ima/ima_digest_list.c:165:42: sparse: sparse: cast to restricted __le16
   security/integrity/ima/ima_digest_list.c:166:37: sparse: sparse: cast to restricted __le16
>> security/integrity/ima/ima_digest_list.c:167:38: sparse: sparse: cast to restricted __le32
   security/integrity/ima/ima_digest_list.c:168:40: sparse: sparse: cast to restricted __le32
>> security/integrity/ima/ima_digest_list.c:416:20: sparse: sparse: symbol 'parser_task' was not declared. Should it be static?

vim +164 security/integrity/ima/ima_digest_list.c

b3fef06570ef2b Roberto Sassu 2023-09-12  138  
b3fef06570ef2b Roberto Sassu 2023-09-12  139  int ima_parse_compact_list(loff_t size, void *buf, int op)
b3fef06570ef2b Roberto Sassu 2023-09-12  140  {
b3fef06570ef2b Roberto Sassu 2023-09-12  141  	u8 *digest;
b3fef06570ef2b Roberto Sassu 2023-09-12  142  	void *bufp = buf, *bufendp = buf + size;
b3fef06570ef2b Roberto Sassu 2023-09-12  143  	struct compact_list_hdr *hdr;
b3fef06570ef2b Roberto Sassu 2023-09-12  144  	size_t digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12  145  	int ret = 0, i;
b3fef06570ef2b Roberto Sassu 2023-09-12  146  
80701e75d21f48 Roberto Sassu 2023-09-12  147  	if (!(ima_digest_list_actions & ima_policy_flag))
80701e75d21f48 Roberto Sassu 2023-09-12  148  		return -EACCES;
80701e75d21f48 Roberto Sassu 2023-09-12  149  
b3fef06570ef2b Roberto Sassu 2023-09-12  150  	while (bufp < bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  151  		if (bufp + sizeof(*hdr) > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  152  			pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  153  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  154  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  155  
b3fef06570ef2b Roberto Sassu 2023-09-12  156  		hdr = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12  157  
b3fef06570ef2b Roberto Sassu 2023-09-12  158  		if (hdr->version != 1) {
b3fef06570ef2b Roberto Sassu 2023-09-12  159  			pr_err("compact list, unsupported version\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  160  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  161  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  162  
b3fef06570ef2b Roberto Sassu 2023-09-12  163  		if (ima_canonical_fmt) {
b3fef06570ef2b Roberto Sassu 2023-09-12 @164  			hdr->type = le16_to_cpu(hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  165  			hdr->modifiers = le16_to_cpu(hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12  166  			hdr->algo = le16_to_cpu(hdr->algo);
b3fef06570ef2b Roberto Sassu 2023-09-12 @167  			hdr->count = le32_to_cpu(hdr->count);
b3fef06570ef2b Roberto Sassu 2023-09-12  168  			hdr->datalen = le32_to_cpu(hdr->datalen);
b3fef06570ef2b Roberto Sassu 2023-09-12  169  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  170  
b3fef06570ef2b Roberto Sassu 2023-09-12  171  		if (hdr->algo >= HASH_ALGO__LAST)
b3fef06570ef2b Roberto Sassu 2023-09-12  172  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  173  
b3fef06570ef2b Roberto Sassu 2023-09-12  174  		digest_len = hash_digest_size[hdr->algo];
b3fef06570ef2b Roberto Sassu 2023-09-12  175  
b3fef06570ef2b Roberto Sassu 2023-09-12  176  		if (hdr->type >= COMPACT__LAST) {
b3fef06570ef2b Roberto Sassu 2023-09-12  177  			pr_err("compact list, invalid type %d\n", hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  178  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  179  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  180  
b3fef06570ef2b Roberto Sassu 2023-09-12  181  		bufp += sizeof(*hdr);
b3fef06570ef2b Roberto Sassu 2023-09-12  182  
b3fef06570ef2b Roberto Sassu 2023-09-12  183  		for (i = 0; i < hdr->count; i++) {
b3fef06570ef2b Roberto Sassu 2023-09-12  184  			if (bufp + digest_len > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12  185  				pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  186  				return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  187  			}
b3fef06570ef2b Roberto Sassu 2023-09-12  188  
b3fef06570ef2b Roberto Sassu 2023-09-12  189  			digest = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12  190  			bufp += digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12  191  
b3fef06570ef2b Roberto Sassu 2023-09-12  192  			if (op == DIGEST_LIST_OP_ADD)
b3fef06570ef2b Roberto Sassu 2023-09-12  193  				ret = ima_add_digest_data_entry(digest,
b3fef06570ef2b Roberto Sassu 2023-09-12  194  					hdr->algo, hdr->type, hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12  195  			else if (op == DIGEST_LIST_OP_DEL)
b3fef06570ef2b Roberto Sassu 2023-09-12  196  				ima_del_digest_data_entry(digest, hdr->algo,
b3fef06570ef2b Roberto Sassu 2023-09-12  197  					hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12  198  			if (ret < 0 && ret != -EEXIST)
b3fef06570ef2b Roberto Sassu 2023-09-12  199  				return ret;
b3fef06570ef2b Roberto Sassu 2023-09-12  200  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  201  
b3fef06570ef2b Roberto Sassu 2023-09-12  202  		if (i != hdr->count ||
b3fef06570ef2b Roberto Sassu 2023-09-12  203  		    bufp != (void *)hdr + sizeof(*hdr) + hdr->datalen) {
b3fef06570ef2b Roberto Sassu 2023-09-12  204  			pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12  205  			return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12  206  		}
b3fef06570ef2b Roberto Sassu 2023-09-12  207  	}
b3fef06570ef2b Roberto Sassu 2023-09-12  208  
b3fef06570ef2b Roberto Sassu 2023-09-12  209  	return bufp - buf;
b3fef06570ef2b Roberto Sassu 2023-09-12  210  }
80701e75d21f48 Roberto Sassu 2023-09-12  211  

:::::: The code at line 164 was first introduced by commit
:::::: b3fef06570ef2b61dd7181e5c1d128bfcbf6b2ef ima: Add parser of compact digest list

:::::: TO: Roberto Sassu <roberto.sassu@huawei.com>
:::::: CC: zgzxx <zhangguangzhi3@huawei.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2025-12-22 23:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-21  5:45 [openeuler:OLK-6.6 3557/3557] security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16 kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2025-12-22 23:25 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.