Re: [PATCH bpf-next v3 07/11] bpf: Rename sanitize_stack_spill to nospec_result

2025-05-01 Thread Kumar Kartikeya Dwivedi
On Thu, 1 May 2025 at 10:02, Luis Gerhorst  wrote:
>
> This is made to clarify that this flag will cause a nospec to be added
> after this insn and can therefore be relied upon to reduce speculative
> path analysis.
>
> Signed-off-by: Luis Gerhorst 
> Cc: Henriette Herzog 
> Cc: Maximilian Ott 
> Cc: Milan Stephan 
> ---

Acked-by: Kumar Kartikeya Dwivedi 



[PATCH bpf-next v3 07/11] bpf: Rename sanitize_stack_spill to nospec_result

2025-05-01 Thread Luis Gerhorst
This is made to clarify that this flag will cause a nospec to be added
after this insn and can therefore be relied upon to reduce speculative
path analysis.

Signed-off-by: Luis Gerhorst 
Cc: Henriette Herzog 
Cc: Maximilian Ott 
Cc: Milan Stephan 
---
 include/linux/bpf_verifier.h | 2 +-
 kernel/bpf/verifier.c| 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h
index 9734544b6957..cebb67becdad 100644
--- a/include/linux/bpf_verifier.h
+++ b/include/linux/bpf_verifier.h
@@ -576,7 +576,7 @@ struct bpf_insn_aux_data {
u64 map_key_state; /* constant (32 bit) key tracking for maps */
int ctx_field_size; /* the ctx field size for load insn, maybe 0 */
u32 seen; /* this insn was processed by the verifier at env->pass_cnt */
-   bool sanitize_stack_spill; /* subject to Spectre v4 sanitation */
+   bool nospec_result; /* result is unsafe under speculation, nospec must 
follow */
bool zext_dst; /* this insn zero extends dst reg */
bool needs_zext; /* alu op needs to clear upper bits */
bool storage_get_func_atomic; /* bpf_*_storage_get() with atomic memory 
alloc */
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 9c921867f77f..1e1eca85b7a6 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5031,7 +5031,7 @@ static int check_stack_write_fixed_off(struct 
bpf_verifier_env *env,
}
 
if (sanitize)
-   env->insn_aux_data[insn_idx].sanitize_stack_spill = 
true;
+   env->insn_aux_data[insn_idx].nospec_result = true;
}
 
err = destroy_if_dynptr_stack_slot(env, state, spi);
@@ -20887,7 +20887,7 @@ static int convert_ctx_accesses(struct bpf_verifier_env 
*env)
}
 
if (type == BPF_WRITE &&
-   env->insn_aux_data[i + delta].sanitize_stack_spill) {
+   env->insn_aux_data[i + delta].nospec_result) {
struct bpf_insn patch[] = {
*insn,
BPF_ST_NOSPEC(),
-- 
2.49.0