Re: [PATCH bpf-next v5 06/10] bpf, x86: emit KASAN checks into x86 JITed programs

From: Alexis Lothoré

Date: Thu Jul 16 2026 - 02:32:15 EST


On Thu Jul 16, 2026 at 12:28 AM CEST, Ihor Solodrai wrote:
> On 7/9/26 3:01 AM, Alexis Lothoré (eBPF Foundation) wrote:

[...]

>> @@ -1984,6 +2000,10 @@ static int do_jit(struct bpf_verifier_env *env, struct bpf_prog *bpf_prog, int *
>> EMIT_ENDBR();
>>
>> ip = image + addrs[i - 1] + (prog - temp);
>> + insn_idx = i - 1 + bpf_prog->aux->subprog_start;
>> + accesses_stack_only =
>> + env ? !env->insn_aux_data[insn_idx].non_stack_access :
>> + false;
>
> I don't like how accesses_stack_only is a boolean argument to
> emit_kasan_check(), that is only used for early return.
> I can see not wanting to do
>
> if (!accesses_stack_only)
> err = emit_kasan_check(...);
>
> on every call site, but a bool arg is even worse IMO.

Yes, that was indeed the intent, but ok, I can get back to set the
stack access check out of the function.

[...]

>> @@ -2626,7 +2662,17 @@ static int do_jit(struct bpf_verifier_env *env, struct bpf_prog *bpf_prog, int *
>> if (dst_reg == BPF_REG_0)
>> real_dst_reg = BPF_REG_AX;
>>
>> + ip += 3;
>
> nit
>
> IIUC the 3 comes from emit_mov_reg() above it (:2659), right? I was
> thinking to suggest a comment, but well I figured it out from the
> code, so others should too...

Yes, that's indeed where it comes from (and this cost me quite some
debugging time to spot that I was missing this offset !)
>
> Maybe instead of hardcoding 3 we could calculcate the diff
> before/after the mov is emitted?

ACK, I'll remove the hardcoded scalar and set it to (prog - *pprog)

Alexis



--
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com