Lines Matching defs:at

178 /* Accumulate may_read masks for @frame at @insn_idx */
614 * Combined register + stack arg tracking: R0-R10 at indices 0-10,
615 * outgoing stack arg slots at indices MAX_BPF_REG..MAX_BPF_REG+6.
628 static bool arg_is_visited(const struct arg_track *at)
630 return at->frame != ARG_UNVISITED;
633 static bool arg_is_fp(const struct arg_track *at)
635 return at->frame >= 0 || at->frame == ARG_IMPRECISE;
638 static void verbose_arg_track(struct bpf_verifier_env *env, struct arg_track *at)
642 switch (at->frame) {
645 case ARG_IMPRECISE: verbose(env, "IMP%x", at->mask); break;
648 if (at->off_cnt == 0) {
649 verbose(env, "fp%d ?", at->frame);
651 for (i = 0; i < at->off_cnt; i++) {
654 verbose(env, "fp%d%+d", at->frame, at->off[i]);
681 struct arg_track at = {};
683 at.frame = arg;
684 at.off[0] = off;
685 at.off_cnt = 1;
686 return at;
753 /* Join two arg_track values at merge points */
868 static void arg_padd(struct arg_track *at, s64 delta)
872 if (at->off_cnt == 0)
874 for (i = 0; i < at->off_cnt; i++) {
877 if (arg_add(at->off[i], delta, &new_off)) {
878 at->off_cnt = 0;
881 at->off[i] = new_off;
1052 /* Log outgoing stack arg slot transitions at indices MAX_BPF_REG..MAX_AT_TRACK_REGS-1 */
1083 static bool can_be_local_fp(int depth, int regno, struct arg_track *at)
1085 return regno == BPF_REG_FP || at->frame == depth ||
1086 (at->frame == ARG_IMPRECISE && (at->mask & BIT(depth)));
1333 /* Record load/store access for a given 'at' state of 'insn'. */
1336 struct arg_track *at, int insn_idx)
1346 * Stack arg insns use dst_reg/src_reg=BPF_REG_PARAMS(11). Since at[]
1347 * is extended to MAX_AT_TRACK_REGS, at[11] holds the arg_track for
1357 ptr = &at[insn->src_reg];
1364 ptr = &at[insn->src_reg];
1366 ptr = &at[insn->dst_reg];
1368 ptr = &at[insn->dst_reg];
1373 ptr = &at[insn->dst_reg];
1404 struct arg_track *at, int arg_idx,
1408 int frame = at->frame;
1412 if (!arg_is_fp(at))
1431 err = record_stack_access(instance, at, bytes, frame, insn_idx);
1433 err = record_imprecise(instance, at->mask, insn_idx);
1437 /* Record stack access for a given 'at' state of helper/kfunc 'insn' */
1440 struct arg_track *at,
1454 err = record_arg_access(env, instance, insn, &at[r], r - 1, insn_idx);
1460 err = record_arg_access(env, instance, insn, &at[MAX_BPF_REG + r],
1912 /* Build entry args: R1-R5 and stack args from at_in at call site */