Lines Matching refs:insn_idx

122 	u32 insn_idx : 24;  member
212 u32 insn_idx; member
608 static void format_disasm_line(struct bpf_verifier_env *env, int insn_idx, in format_disasm_line() argument
619 line->idx = insn_idx; in format_disasm_line()
623 if (insn_idx < 0 || insn_idx >= env->prog->len) in format_disasm_line()
626 if (insn_idx > 0 && bpf_is_ldimm64(&env->prog->insnsi[insn_idx - 1])) in format_disasm_line()
629 insn = &env->prog->insnsi[insn_idx]; in format_disasm_line()
630 if (bpf_is_ldimm64(insn) && insn_idx + 1 >= env->prog->len) in format_disasm_line()
774 static void diag_print_insn_context(struct bpf_verifier_env *env, u32 insn_idx, in diag_print_insn_context() argument
783 format_disasm_line(env, insn_idx + row, &disasm_lines[i]); in diag_print_insn_context()
792 line->idx == insn_idx ? ">>> " : " ", in diag_print_insn_context()
797 static void bpf_diag_source(struct bpf_verifier_env *env, u32 insn_idx, const char *label, in bpf_diag_source() argument
833 linfo = bpf_find_linfo(env->prog, insn_idx); in bpf_diag_source()
837 diag_write(env, " insn %u\n", insn_idx); in bpf_diag_source()
841 subprog = bpf_find_containing_subprog(env, insn_idx); in bpf_diag_source()
891 diag_print_insn_context(env, insn_idx, disasm_lines); in bpf_diag_source()
896 diag_print_insn_context(env, insn_idx, disasm_lines); in bpf_diag_source()
906 void bpf_diag_register_type(struct bpf_verifier_env *env, u32 insn_idx, int regno, in bpf_diag_register_type() argument
921 bpf_diag_source(env, insn_idx, "error", "%s", problem); in bpf_diag_register_type()
995 void bpf_diag_call_type(struct bpf_verifier_env *env, u32 insn_idx, int argno, int regno, in bpf_diag_call_type() argument
1032 bpf_diag_source(env, insn_idx, "error", "invalid %s for %s", arg_desc, call_name); in bpf_diag_call_type()
1082 void bpf_diag_ctx_forbidden(struct bpf_verifier_env *env, u32 insn_idx, in bpf_diag_ctx_forbidden() argument
1127 bpf_diag_source(env, insn_idx, "error", "%s is not allowed in %s", operation, in bpf_diag_ctx_forbidden()
1136 void bpf_diag_ctx_active(struct bpf_verifier_env *env, u32 insn_idx, const char *operation, in bpf_diag_ctx_active() argument
1154 bpf_diag_source(env, insn_idx, "error", "%s is not allowed before leaving %s", in bpf_diag_ctx_active()
1162 void bpf_diag_ctx_required(struct bpf_verifier_env *env, u32 insn_idx, const char *operation, in bpf_diag_ctx_required() argument
1172 bpf_diag_source(env, insn_idx, "error", "%s requires %s", operation, context); in bpf_diag_ctx_required()
1177 void bpf_diag_ctx_underflow(struct bpf_verifier_env *env, u32 insn_idx, in bpf_diag_ctx_underflow() argument
1193 bpf_diag_source(env, insn_idx, "error", "%s has no matching enter on this path", in bpf_diag_ctx_underflow()
1201 void bpf_diag_program_structure(struct bpf_verifier_env *env, u32 insn_idx, in bpf_diag_program_structure() argument
1215 bpf_diag_source(env, insn_idx, "error", "%s", problem); in bpf_diag_program_structure()
1220 void bpf_diag_policy(struct bpf_verifier_env *env, u32 insn_idx, const char *operation, in bpf_diag_policy() argument
1227 bpf_diag_source(env, insn_idx, "error", "policy check failed for %s", operation); in bpf_diag_policy()
1232 void bpf_diag_invalid_deref(struct bpf_verifier_env *env, u32 insn_idx, int regno, in bpf_diag_invalid_deref() argument
1272 bpf_diag_source(env, insn_idx, "error", in bpf_diag_invalid_deref()
1275 bpf_diag_source(env, insn_idx, "error", "invalid dereference of %s (%s)", in bpf_diag_invalid_deref()
1299 void bpf_diag_unreadable_reg(struct bpf_verifier_env *env, u32 insn_idx, int regno) in bpf_diag_unreadable_reg() argument
1341 bpf_diag_source(env, insn_idx, "error", "R%d is not readable", regno); in bpf_diag_unreadable_reg()
1377 void bpf_diag_stack_arg_uninit(struct bpf_verifier_env *env, u32 insn_idx, int nargs, in bpf_diag_stack_arg_uninit() argument
1407 bpf_diag_source(env, insn_idx, "error", "%s is not initialized", arg_buf); in bpf_diag_stack_arg_uninit()
1416 void bpf_diag_memory(struct bpf_verifier_env *env, u32 insn_idx, const char *problem, in bpf_diag_memory() argument
1423 bpf_diag_source(env, insn_idx, "error", "%s", problem); in bpf_diag_memory()
1428 void bpf_diag_record_branch(struct bpf_verifier_env *env, u32 insn_idx, bool cond_true) in bpf_diag_record_branch() argument
1431 .insn_idx = insn_idx, in bpf_diag_record_branch()
1455 static bool diag_mod_insn_origin(struct bpf_verifier_env *env, u32 insn_idx, in diag_mod_insn_origin() argument
1459 const struct bpf_insn *insn = &env->prog->insnsi[insn_idx]; in diag_mod_insn_origin()
1489 insn = &env->prog->insnsi[event->insn_idx]; in diag_mod_keeps_lineage()
1512 static void diag_record_mod(struct bpf_verifier_env *env, u32 insn_idx, in diag_record_mod() argument
1520 .insn_idx = insn_idx, in diag_record_mod()
1535 } else if (diag_mod_insn_origin(env, insn_idx, &target, &event.mod.origin)) { in diag_record_mod()
1631 diag->mod.insn_idx = env->insn_idx; in bpf_diag_mod_begin()
1651 diag_record_mod(env, diag->mod.insn_idx, diag->mod.target, diag->mod.reason, in bpf_diag_mod_end()
1663 diag_record_mod(env, env->insn_idx, target, reason, reg, NULL, NULL); in bpf_diag_record_scrub()
1670 diag_record_mod(env, env->insn_idx, in bpf_diag_record_scrub_stack()
1675 static void diag_record_ref(struct bpf_verifier_env *env, u32 insn_idx, u8 kind, u32 ref_id) in diag_record_ref() argument
1678 .insn_idx = insn_idx, in diag_record_ref()
1688 void bpf_diag_record_ref_acquire(struct bpf_verifier_env *env, u32 insn_idx, u32 ref_id) in bpf_diag_record_ref_acquire() argument
1690 diag_record_ref(env, insn_idx, BPF_DIAG_HISTORY_REF_ACQUIRE, ref_id); in bpf_diag_record_ref_acquire()
1693 void bpf_diag_record_ref_release(struct bpf_verifier_env *env, u32 insn_idx, u32 ref_id) in bpf_diag_record_ref_release() argument
1695 diag_record_ref(env, insn_idx, BPF_DIAG_HISTORY_REF_RELEASE, ref_id); in bpf_diag_record_ref_release()
1698 void bpf_diag_record_context(struct bpf_verifier_env *env, u32 insn_idx, in bpf_diag_record_context() argument
1706 .insn_idx = insn_idx, in bpf_diag_record_context()
1952 void bpf_diag_mem_bounds(struct bpf_verifier_env *env, u32 insn_idx, int regno, in bpf_diag_mem_bounds() argument
1976 bpf_diag_source(env, insn_idx, "error", "access may be outside object bounds"); in bpf_diag_mem_bounds()
1999 static void diag_res_report(struct bpf_verifier_env *env, u32 insn_idx, const char *problem, in diag_res_report() argument
2006 bpf_diag_source(env, insn_idx, "error", "%s", problem); in diag_res_report()
2009 void bpf_diag_res(struct bpf_verifier_env *env, u32 insn_idx, const char *problem, in bpf_diag_res() argument
2012 diag_res_report(env, insn_idx, problem, reason); in bpf_diag_res()
2016 void bpf_diag_lock(struct bpf_verifier_env *env, u32 insn_idx, const char *problem, in bpf_diag_lock() argument
2020 diag_res_report(env, insn_idx, problem, reason); in bpf_diag_lock()
2024 bpf_diag_source(env, active_lock->insn_idx, "acquired", in bpf_diag_lock()
2032 void bpf_diag_irq(struct bpf_verifier_env *env, u32 insn_idx, const char *problem, in bpf_diag_irq() argument
2045 bpf_diag_source(env, insn_idx, "error", "%s", problem); in bpf_diag_irq()
2187 env, event->insn_idx, "invalidated", in diag_print_mod()
2228 bpf_diag_source(env, event->insn_idx, "invalidated", in diag_print_mod()
2233 bpf_diag_source(env, event->insn_idx, label, "%s changed from %s to %s", target_desc, in diag_print_mod()
2243 bpf_diag_source(env, event->insn_idx, label, "owned resource (id=%u)", in diag_print_ref_event()
2267 bpf_diag_source(env, event->insn_idx, "context", "%s %s; depth is now %u", in diag_print_context_event()
2332 bpf_diag_source(env, event->insn_idx, "branch", in diag_print_history()