Lines Matching refs:regno

479 static void mark_reg_unknown_value(struct reg_state *regs, u32 regno)  in mark_reg_unknown_value()  argument
481 BUG_ON(regno >= MAX_BPF_REG); in mark_reg_unknown_value()
482 regs[regno].type = UNKNOWN_VALUE; in mark_reg_unknown_value()
483 regs[regno].imm = 0; in mark_reg_unknown_value()
484 regs[regno].map_ptr = NULL; in mark_reg_unknown_value()
493 static int check_reg_arg(struct reg_state *regs, u32 regno, in check_reg_arg() argument
496 if (regno >= MAX_BPF_REG) { in check_reg_arg()
497 verbose("R%d is invalid\n", regno); in check_reg_arg()
503 if (regs[regno].type == NOT_INIT) { in check_reg_arg()
504 verbose("R%d !read_ok\n", regno); in check_reg_arg()
509 if (regno == BPF_REG_FP) { in check_reg_arg()
514 mark_reg_unknown_value(regs, regno); in check_reg_arg()
613 static int check_map_access(struct verifier_env *env, u32 regno, int off, in check_map_access() argument
616 struct bpf_map *map = env->cur_state.regs[regno].map_ptr; in check_map_access()
644 static int check_mem_access(struct verifier_env *env, u32 regno, int off, in check_mem_access() argument
660 if (state->regs[regno].type == PTR_TO_MAP_VALUE) { in check_mem_access()
661 err = check_map_access(env, regno, off, size); in check_mem_access()
665 } else if (state->regs[regno].type == PTR_TO_CTX) { in check_mem_access()
670 } else if (state->regs[regno].type == FRAME_PTR) { in check_mem_access()
681 regno, reg_type_str[state->regs[regno].type]); in check_mem_access()
724 int regno, int access_size) in check_stack_boundary() argument
730 if (regs[regno].type != PTR_TO_STACK) in check_stack_boundary()
733 off = regs[regno].imm; in check_stack_boundary()
737 regno, off, access_size); in check_stack_boundary()
751 static int check_func_arg(struct verifier_env *env, u32 regno, in check_func_arg() argument
754 struct reg_state *reg = env->cur_state.regs + regno; in check_func_arg()
762 verbose("R%d !read_ok\n", regno); in check_func_arg()
784 verbose("R%d type=%s expected=%s\n", regno, in check_func_arg()
807 err = check_stack_boundary(env, regno, (*mapp)->key_size); in check_func_arg()
818 err = check_stack_boundary(env, regno, (*mapp)->value_size); in check_func_arg()
825 if (regno == 0) { in check_func_arg()
830 err = check_stack_boundary(env, regno - 1, reg->imm); in check_func_arg()