Lines Matching refs:poke
544 static void emit_bpf_tail_call_direct(struct bpf_jit_poke_descriptor *poke,
565 poke->tailcall_bypass = ip + (prog - start);
566 poke->adj_off = X86_TAIL_CALL_OFFSET;
567 poke->tailcall_target = ip + ctx->tail_call_direct_label - X86_PATCH_SIZE;
568 poke->bypass_addr = (u8 *)poke->tailcall_target + X86_PATCH_SIZE;
570 emit_jump(&prog, (u8 *)poke->tailcall_target + X86_PATCH_SIZE,
571 poke->tailcall_bypass);
589 struct bpf_jit_poke_descriptor *poke;
595 poke = &prog->aux->poke_tab[i];
596 if (poke->aux && poke->aux != prog->aux)
599 WARN_ON_ONCE(READ_ONCE(poke->tailcall_target_stable));
601 if (poke->reason != BPF_POKE_REASON_TAIL_CALL)
604 array = container_of(poke->tail_call.map, struct bpf_array, map);
606 target = array->ptrs[poke->tail_call.key];
608 ret = __bpf_arch_text_poke(poke->tailcall_target,
611 poke->adj_off);
613 ret = __bpf_arch_text_poke(poke->tailcall_bypass,
615 (u8 *)poke->tailcall_target +
619 WRITE_ONCE(poke->tailcall_target_stable, true);
2933 void bpf_arch_poke_desc_update(struct bpf_jit_poke_descriptor *poke,
2939 old_bypass_addr = old ? NULL : poke->bypass_addr;
2940 old_addr = old ? (u8 *)old->bpf_func + poke->adj_off : NULL;
2941 new_addr = new ? (u8 *)new->bpf_func + poke->adj_off : NULL;
2949 ret = __bpf_arch_text_poke(poke->tailcall_target,
2954 ret = __bpf_arch_text_poke(poke->tailcall_bypass,
2956 poke->bypass_addr,
2961 ret = __bpf_arch_text_poke(poke->tailcall_bypass,
2964 poke->bypass_addr);
2972 ret = __bpf_arch_text_poke(poke->tailcall_target,