Lines Matching defs:arg_track

814 struct arg_track {
836 struct arg_track at[];
854 static bool arg_is_visited(const struct arg_track *at)
859 static bool arg_is_fp(const struct arg_track *at)
864 static void verbose_arg_track(struct bpf_verifier_env *env, struct arg_track *at)
887 static bool arg_track_eq(const struct arg_track *a, const struct arg_track *b)
905 static struct arg_track arg_single(s8 arg, s16 off)
907 struct arg_track at = {};
920 static struct arg_track arg_merge_offsets(struct arg_track a, struct arg_track b)
922 struct arg_track result = { .frame = a.frame };
923 struct arg_track imp = { .frame = a.frame };
962 static struct arg_track arg_join_imprecise(struct arg_track a, struct arg_track b)
976 return (struct arg_track){ .mask = m, .frame = ARG_IMPRECISE };
979 /* Join two arg_track values at merge points */
980 static struct arg_track __arg_track_join(struct arg_track a, struct arg_track b)
989 return (struct arg_track){ .frame = a.frame };
1022 struct arg_track *in, struct arg_track out)
1024 struct arg_track old = *in;
1025 struct arg_track new_val = __arg_track_join(old, out);
1056 static void arg_track_alu64(struct arg_track *dst, const struct arg_track *src)
1094 static void arg_padd(struct arg_track *at, s64 delta)
1172 static struct arg_track fill_from_stack(struct bpf_insn *insn,
1173 struct arg_track *at_out, int reg,
1174 struct arg_track *at_stack_out, u32 nslots,
1177 struct arg_track imp = {
1181 struct arg_track result = { .frame = ARG_NONE };
1212 static void spill_to_stack(struct bpf_insn *insn, struct arg_track *at_out,
1213 int reg, struct arg_track *at_stack_out, u32 nslots,
1214 struct arg_track *val, u32 sz)
1216 struct arg_track none = { .frame = ARG_NONE };
1217 struct arg_track new_val = sz == 8 ? *val : none;
1253 static void clear_overlapping_stack_slots(struct arg_track *at_stack, u32 nslots, s16 off,
1256 struct arg_track none = { .frame = ARG_NONE };
1280 struct arg_track *at_out, int reg,
1281 struct arg_track *at_stack_out, u32 nslots, u32 sz)
1306 struct arg_track *at_in, struct arg_track *at_stack_in,
1307 struct arg_track *at_out, struct arg_track *at_stack_out, u32 nslots)
1354 static bool can_be_local_fp(int depth, int regno, struct arg_track *at)
1364 static struct arg_track arg_track_deref(struct bpf_verifier_env *env, struct bpf_insn *insn,
1365 struct arg_track *at_out, int reg,
1366 struct arg_track *at_stack_out, u32 nslots,
1369 struct arg_track *ptr = &at_out[reg];
1380 return (struct arg_track){ .frame = ARG_NONE };
1384 * Pure dataflow transfer function for arg_track state.
1390 struct arg_track *at_out, struct arg_track *at_stack_out, u32 nslots,
1391 const struct arg_track *at_stack_arg_entry,
1398 struct arg_track *dst = &at_out[insn->dst_reg];
1399 struct arg_track *src = &at_out[insn->src_reg];
1400 struct arg_track none = { .frame = ARG_NONE };
1447 * The fill_from_stack() may return the stale spill — which is an FP-derived arg_track
1489 struct arg_track old = none;
1516 static int record_stack_access_off(struct func_instance *instance, const struct arg_track *arg,
1562 const struct arg_track *arg,
1619 struct arg_track *at, int insn_idx)
1626 struct arg_track resolved, *ptr;
1631 * is extended to MAX_AT_TRACK_REGS, at[11] holds the arg_track for
1675 /* Resolve offsets: fold insn->off into arg_track */
1703 struct arg_track *at, int arg_idx,
1744 struct arg_track *at,
1840 struct arg_track (*at_in)[MAX_AT_TRACK_REGS];
1847 struct arg_track *at_stack_in, u32 nslots)
1925 static void record_stack_ptrs(struct bpf_verifier_env *env, int idx, struct arg_track *at_in)
1947 struct arg_track *callee_entry,
1960 struct arg_track (*at_in)[MAX_AT_TRACK_REGS] = NULL;
1961 struct arg_track at_out[MAX_AT_TRACK_REGS];
1962 struct arg_track *at_stack_in = NULL;
1963 struct arg_track *at_stack_out = NULL;
1964 struct arg_track at_stack_arg_entry[MAX_STACK_ARG_SLOTS];
1965 struct arg_track unvisited = { .frame = ARG_UNVISITED };
1966 struct arg_track none = { .frame = ARG_NONE };
2103 static bool has_fp_args(struct arg_track *args)
2234 struct arg_track *entry_args,
2282 struct arg_track callee_args[MAX_AT_TRACK_REGS] = {};
2283 struct arg_track none = { .frame = ARG_NONE };