Lines Matching refs:poke
506 static void emit_bpf_tail_call_direct(struct bpf_jit_poke_descriptor *poke,
527 poke->tailcall_bypass = ip + (prog - start);
528 poke->adj_off = X86_TAIL_CALL_OFFSET;
529 poke->tailcall_target = ip + ctx->tail_call_direct_label - X86_PATCH_SIZE;
530 poke->bypass_addr = (u8 *)poke->tailcall_target + X86_PATCH_SIZE;
532 emit_jump(&prog, (u8 *)poke->tailcall_target + X86_PATCH_SIZE,
533 poke->tailcall_bypass);
551 struct bpf_jit_poke_descriptor *poke;
557 poke = &prog->aux->poke_tab[i];
558 if (poke->aux && poke->aux != prog->aux)
561 WARN_ON_ONCE(READ_ONCE(poke->tailcall_target_stable));
563 if (poke->reason != BPF_POKE_REASON_TAIL_CALL)
566 array = container_of(poke->tail_call.map, struct bpf_array, map);
568 target = array->ptrs[poke->tail_call.key];
571 * and still not locked as read-only. Once poke
572 * location is active (poke->tailcall_target_stable),
579 ret = __bpf_arch_text_poke(poke->tailcall_target,
582 poke->adj_off, false);
584 ret = __bpf_arch_text_poke(poke->tailcall_bypass,
586 (u8 *)poke->tailcall_target +
590 WRITE_ONCE(poke->tailcall_target_stable, true);