summaryrefslogtreecommitdiffstats
path: root/kernel/bpf/verifier.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/bpf/verifier.c')
-rw-r--r--kernel/bpf/verifier.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1b9496c41383..0e4edd7e3c5f 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -7320,7 +7320,12 @@ static int jit_subprogs(struct bpf_verifier_env *env)
7320 subprog_end = env->subprog_info[i + 1].start; 7320 subprog_end = env->subprog_info[i + 1].start;
7321 7321
7322 len = subprog_end - subprog_start; 7322 len = subprog_end - subprog_start;
7323 func[i] = bpf_prog_alloc(bpf_prog_size(len), GFP_USER); 7323 /* BPF_PROG_RUN doesn't call subprogs directly,
7324 * hence main prog stats include the runtime of subprogs.
7325 * subprogs don't have IDs and not reachable via prog_get_next_id
7326 * func[i]->aux->stats will never be accessed and stays NULL
7327 */
7328 func[i] = bpf_prog_alloc_no_stats(bpf_prog_size(len), GFP_USER);
7324 if (!func[i]) 7329 if (!func[i])
7325 goto out_free; 7330 goto out_free;
7326 memcpy(func[i]->insnsi, &prog->insnsi[subprog_start], 7331 memcpy(func[i]->insnsi, &prog->insnsi[subprog_start],