linked_regs
u64 linked_regs;
static void __collect_linked_regs(struct linked_regs *reg_set, struct bpf_reg_state *reg,
struct linked_regs *linked_regs)
__collect_linked_regs(linked_regs, reg, id, i, j, true);
__collect_linked_regs(linked_regs, reg, id, i, j, false);
struct bpf_reg_state *known_reg, struct linked_regs *linked_regs)
for (i = 0; i < linked_regs->cnt; ++i) {
e = &linked_regs->entries[i];
struct linked_regs linked_regs = {};
collect_linked_regs(env, this_branch, src_reg->id, &linked_regs);
collect_linked_regs(env, this_branch, dst_reg->id, &linked_regs);
if (linked_regs.cnt > 1) {
err = push_jmp_history(env, this_branch, 0, linked_regs_pack(&linked_regs));
sync_linked_regs(env, this_branch, src_reg, &linked_regs);
&linked_regs);
sync_linked_regs(env, this_branch, dst_reg, &linked_regs);
&linked_regs);
static struct linked_reg *linked_regs_push(struct linked_regs *s)
static u64 linked_regs_pack(struct linked_regs *s)
static void linked_regs_unpack(u64 val, struct linked_regs *s)
int insn_flags, u64 linked_regs)
verifier_bug_if(env->cur_hist_ent->linked_regs != 0, env,
env->insn_idx, env->cur_hist_ent->linked_regs);
env->cur_hist_ent->linked_regs = linked_regs;
p->linked_regs = linked_regs;
struct linked_regs linked_regs;
if (!hist || hist->linked_regs == 0)
linked_regs_unpack(hist->linked_regs, &linked_regs);
for (i = 0; i < linked_regs.cnt; ++i) {
struct linked_reg *e = &linked_regs.entries[i];
for (i = 0; i < linked_regs.cnt; ++i) {
struct linked_reg *e = &linked_regs.entries[i];