CC: [email protected] BCC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Kumar Kartikeya Dwivedi <[email protected]> TO: [email protected] CC: Alexei Starovoitov <[email protected]> CC: Andrii Nakryiko <[email protected]> CC: Daniel Borkmann <[email protected]> CC: "Toke Høiland-Jørgensen" <[email protected]> CC: Jesper Dangaard Brouer <[email protected]>
Hi Kumar, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on bpf-next/master] url: https://github.com/intel-lab-lkp/linux/commits/Kumar-Kartikeya-Dwivedi/Introduce-typed-pointer-support-in-BPF-maps/20220409-173513 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master :::::: branch date: 4 hours ago :::::: commit date: 4 hours ago config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20220409/[email protected]/config) compiler: gcc-11 (Debian 11.2.0-19) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: kernel/bpf/verifier.c:5317 process_kptr_func() warn: passing zero to 'PTR_ERR' vim +/PTR_ERR +5317 kernel/bpf/verifier.c b00628b1c7d595 Alexei Starovoitov 2021-07-14 5295 dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5296 static int process_kptr_func(struct bpf_verifier_env *env, int regno, dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5297 struct bpf_call_arg_meta *meta) dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5298 { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5299 struct bpf_reg_state *regs = cur_regs(env), *reg = ®s[regno]; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5300 struct bpf_map_value_off_desc *off_desc; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5301 struct bpf_map *map_ptr = reg->map_ptr; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5302 u32 kptr_off; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5303 int ret; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5304 dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5305 if (!tnum_is_const(reg->var_off)) { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5306 verbose(env, dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5307 "R%d doesn't have constant offset. kptr has to be at the constant offset\n", dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5308 regno); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5309 return -EINVAL; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5310 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5311 if (!map_ptr->btf) { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5312 verbose(env, "map '%s' has to have BTF in order to use bpf_kptr_xchg\n", dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5313 map_ptr->name); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5314 return -EINVAL; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5315 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5316 if (!map_value_has_kptrs(map_ptr)) { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 @5317 ret = PTR_ERR(map_ptr->kptr_off_tab); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5318 if (ret == -E2BIG) dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5319 verbose(env, "map '%s' has more than %d kptr\n", map_ptr->name, dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5320 BPF_MAP_VALUE_OFF_MAX); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5321 else if (ret == -EEXIST) dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5322 verbose(env, "map '%s' has repeating kptr BTF tags\n", map_ptr->name); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5323 else dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5324 verbose(env, "map '%s' has no valid kptr\n", map_ptr->name); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5325 return -EINVAL; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5326 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5327 dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5328 meta->map_ptr = map_ptr; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5329 /* Check access for BPF_WRITE */ dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5330 meta->raw_mode = true; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5331 ret = check_helper_mem_access(env, regno, sizeof(u64), false, meta); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5332 if (ret < 0) dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5333 return ret; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5334 dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5335 kptr_off = reg->off + reg->var_off.value; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5336 off_desc = bpf_map_kptr_off_contains(map_ptr, kptr_off); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5337 if (!off_desc) { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5338 verbose(env, "off=%d doesn't point to kptr\n", kptr_off); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5339 return -EACCES; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5340 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5341 if (!(off_desc->flags & BPF_MAP_VALUE_OFF_F_REF)) { dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5342 verbose(env, "off=%d kptr isn't referenced kptr\n", kptr_off); dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5343 return -EACCES; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5344 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5345 meta->kptr_off_desc = off_desc; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5346 return 0; dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5347 } dd8be1418d45aa Kumar Kartikeya Dwivedi 2022-04-09 5348 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
