Lines Matching refs:arg_track
595 struct arg_track { struct
613 static bool arg_is_visited(const struct arg_track *at) in arg_is_visited() argument
618 static bool arg_is_fp(const struct arg_track *at) in arg_is_fp()
623 static void verbose_arg_track(struct bpf_verifier_env *env, struct arg_track *at) in verbose_arg_track()
646 static bool arg_track_eq(const struct arg_track *a, const struct arg_track *b) in arg_track_eq()
664 static struct arg_track arg_single(s8 arg, s16 off) in arg_single()
666 struct arg_track at = {}; in arg_single()
679 static struct arg_track arg_merge_offsets(struct arg_track a, struct arg_track b) in arg_merge_offsets()
681 struct arg_track result = { .frame = a.frame }; in arg_merge_offsets()
682 struct arg_track imp = { .frame = a.frame }; in arg_merge_offsets()
721 static struct arg_track arg_join_imprecise(struct arg_track a, struct arg_track b) in arg_join_imprecise()
735 return (struct arg_track){ .mask = m, .frame = ARG_IMPRECISE }; in arg_join_imprecise()
739 static struct arg_track __arg_track_join(struct arg_track a, struct arg_track b) in __arg_track_join()
748 return (struct arg_track){ .frame = a.frame }; in __arg_track_join()
781 struct arg_track *in, struct arg_track out) in arg_track_join()
783 struct arg_track old = *in; in arg_track_join()
784 struct arg_track new_val = __arg_track_join(old, out); in arg_track_join()
813 static void arg_track_alu64(struct arg_track *dst, const struct arg_track *src) in arg_track_alu64()
851 static void arg_padd(struct arg_track *at, s64 delta) in arg_padd()
882 static struct arg_track fill_from_stack(struct bpf_insn *insn, in fill_from_stack()
883 struct arg_track *at_out, int reg, in fill_from_stack()
884 struct arg_track *at_stack_out, in fill_from_stack()
887 struct arg_track imp = { in fill_from_stack()
891 struct arg_track result = { .frame = ARG_NONE }; in fill_from_stack()
922 static void spill_to_stack(struct bpf_insn *insn, struct arg_track *at_out, in spill_to_stack()
923 int reg, struct arg_track *at_stack_out, in spill_to_stack()
924 struct arg_track *val, u32 sz) in spill_to_stack()
926 struct arg_track none = { .frame = ARG_NONE }; in spill_to_stack()
927 struct arg_track new_val = sz == 8 ? *val : none; in spill_to_stack()
963 static void clear_overlapping_stack_slots(struct arg_track *at_stack, s16 off, u32 sz, int cnt) in clear_overlapping_stack_slots()
965 struct arg_track none = { .frame = ARG_NONE }; in clear_overlapping_stack_slots()
989 struct arg_track *at_out, int reg, in clear_stack_for_all_offs()
990 struct arg_track *at_stack_out, u32 sz) in clear_stack_for_all_offs()
1015 struct arg_track *at_in, struct arg_track *at_stack_in, in arg_track_log()
1016 struct arg_track *at_out, struct arg_track *at_stack_out) in arg_track_log()
1051 static bool can_be_local_fp(int depth, int regno, struct arg_track *at) in can_be_local_fp()
1064 struct arg_track *at_out, struct arg_track *at_stack_out, in arg_track_xfer()
1071 struct arg_track *dst = &at_out[insn->dst_reg]; in arg_track_xfer()
1072 struct arg_track *src = &at_out[insn->src_reg]; in arg_track_xfer()
1073 struct arg_track none = { .frame = ARG_NONE }; in arg_track_xfer()
1138 struct arg_track *parent_stack = in arg_track_xfer()
1243 const struct arg_track *arg, in record_stack_access()
1291 struct arg_track *at, int insn_idx) in record_load_store_access()
1297 struct arg_track resolved, *ptr; in record_load_store_access()
1349 struct arg_track *at, in record_call_access()
1448 struct arg_track (*at_in)[MAX_BPF_REG];
1455 struct arg_track (*at_stack_in)[MAX_ARG_SPILL_SLOTS]) in print_subprog_arg_access()
1534 struct arg_track *callee_entry, in compute_subprog_args()
1546 struct arg_track (*at_in)[MAX_BPF_REG] = NULL; in compute_subprog_args()
1547 struct arg_track at_out[MAX_BPF_REG]; in compute_subprog_args()
1548 struct arg_track (*at_stack_in)[MAX_ARG_SPILL_SLOTS] = NULL; in compute_subprog_args()
1549 struct arg_track *at_stack_out = NULL; in compute_subprog_args()
1550 struct arg_track unvisited = { .frame = ARG_UNVISITED }; in compute_subprog_args()
1551 struct arg_track none = { .frame = ARG_NONE }; in compute_subprog_args()
1660 at_stack_in[i], sizeof(struct arg_track) * MAX_ARG_SPILL_SLOTS); in compute_subprog_args()
1678 static bool has_fp_args(struct arg_track *args) in has_fp_args()
1757 struct arg_track *entry_args, in analyze_subprog()
1806 struct arg_track callee_args[BPF_REG_5 + 1]; in analyze_subprog()
1807 struct arg_track none = { .frame = ARG_NONE }; in analyze_subprog()