* [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.