Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[platform/kernel/linux-starfive.git] / kernel / bpf / verifier.c
index e04e338..be38bb9 100644 (file)
@@ -11474,7 +11474,7 @@ static void adjust_subprog_starts(struct bpf_verifier_env *env, u32 off, u32 len
        }
 }
 
-static void adjust_poke_descs(struct bpf_prog *prog, u32 len)
+static void adjust_poke_descs(struct bpf_prog *prog, u32 off, u32 len)
 {
        struct bpf_jit_poke_descriptor *tab = prog->aux->poke_tab;
        int i, sz = prog->aux->size_poke_tab;
@@ -11482,6 +11482,8 @@ static void adjust_poke_descs(struct bpf_prog *prog, u32 len)
 
        for (i = 0; i < sz; i++) {
                desc = &tab[i];
+               if (desc->insn_idx <= off)
+                       continue;
                desc->insn_idx += len - 1;
        }
 }
@@ -11502,7 +11504,7 @@ static struct bpf_prog *bpf_patch_insn_data(struct bpf_verifier_env *env, u32 of
        if (adjust_insn_aux_data(env, new_prog, off, len))
                return NULL;
        adjust_subprog_starts(env, off, len);
-       adjust_poke_descs(new_prog, len);
+       adjust_poke_descs(new_prog, off, len);
        return new_prog;
 }