This is a note to let you know that I've just added the patch titled bpf: move explored_state() closer to the beginning of verifier.c to the 6.6-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: bpf-move-explored_state-closer-to-the-beginning-of-verifier.c.patch and it can be found in the queue-6.6 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 3c4e420cb6536026ddd50eaaff5f30e4f144200d Mon Sep 17 00:00:00 2001 From: Eduard Zingerman <eddyz87@xxxxxxxxx> Date: Tue, 24 Oct 2023 03:09:11 +0300 Subject: bpf: move explored_state() closer to the beginning of verifier.c From: Eduard Zingerman <eddyz87@xxxxxxxxx> commit 3c4e420cb6536026ddd50eaaff5f30e4f144200d upstream. Subsequent patches would make use of explored_state() function. Move it up to avoid adding unnecessary prototype. Signed-off-by: Eduard Zingerman <eddyz87@xxxxxxxxx> Link: https://lore.kernel.org/r/20231024000917.12153-2-eddyz87@xxxxxxxxx Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- kernel/bpf/verifier.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -1786,6 +1786,19 @@ static int copy_verifier_state(struct bp return 0; } +static u32 state_htab_size(struct bpf_verifier_env *env) +{ + return env->prog->len; +} + +static struct bpf_verifier_state_list **explored_state(struct bpf_verifier_env *env, int idx) +{ + struct bpf_verifier_state *cur = env->cur_state; + struct bpf_func_state *state = cur->frame[cur->curframe]; + + return &env->explored_states[(idx ^ state->callsite) % state_htab_size(env)]; +} + static void update_branch_counts(struct bpf_verifier_env *env, struct bpf_verifier_state *st) { while (st) { @@ -14702,21 +14715,6 @@ enum { BRANCH = 2, }; -static u32 state_htab_size(struct bpf_verifier_env *env) -{ - return env->prog->len; -} - -static struct bpf_verifier_state_list **explored_state( - struct bpf_verifier_env *env, - int idx) -{ - struct bpf_verifier_state *cur = env->cur_state; - struct bpf_func_state *state = cur->frame[cur->curframe]; - - return &env->explored_states[(idx ^ state->callsite) % state_htab_size(env)]; -} - static void mark_prune_point(struct bpf_verifier_env *env, int idx) { env->insn_aux_data[idx].prune_point = true; Patches currently in stable-queue which might be from eddyz87@xxxxxxxxx are queue-6.6/bpf-move-explored_state-closer-to-the-beginning-of-verifier.c.patch queue-6.6/bpf-verify-callbacks-as-if-they-are-called-unknown-number-of-times.patch queue-6.6/selftests-bpf-test-widening-for-iterating-callbacks.patch queue-6.6/bpf-keep-track-of-max-number-of-bpf_loop-callback-iterations.patch queue-6.6/bpf-extract-setup_func_entry-utility-function.patch queue-6.6/selftests-bpf-tests-with-delayed-read-precision-makrs-in-loop-body.patch queue-6.6/selftests-bpf-track-string-payload-offset-as-scalar-in-strobemeta.patch queue-6.6/bpf-print-full-verifier-states-on-infinite-loop-detection.patch queue-6.6/selftests-bpf-track-tcp-payload-offset-as-scalar-in-xdp_synproxy.patch queue-6.6/bpf-extract-__check_reg_arg-utility-function.patch queue-6.6/bpf-extract-same_callsites-as-utility-function.patch queue-6.6/bpf-widening-for-callback-iterators.patch queue-6.6/selftests-bpf-test-if-state-loops-are-detected-in-a-tricky-case.patch queue-6.6/bpf-correct-loop-detection-for-iterators-convergence.patch queue-6.6/selftests-bpf-tests-for-iterating-callbacks.patch queue-6.6/bpf-exact-states-comparison-for-iterator-convergence-checks.patch queue-6.6/selftests-bpf-check-if-max-number-of-bpf_loop-iterations-is-tracked.patch