This patch set clean up some code logic related with managing subprog information.
Part of the set are inspried by Edwin's code in his RFC: "bpf/verifier: subprog/func_call simplifications" but with clearer separation so it could be easier to review. - Path 1 unifies main prog and subprogs. All of them are registered in env->subprog_starts. - After patch 1, it is clear that subprog_starts and subprog_stack_depth could be merged as both of them now have main and subprog unified. Patch 2 therefore does the merge, all subprog information are centred at bpf_subprog_info. - Patch 3 goes further to introduce a new fake "exit" subprog which serves as an ending marker to the subprog list. We could then turn the following code snippets across verifier: if (env->subprog_cnt == cur_subprog + 1) subprog_end = insn_cnt; else subprog_end = env->subprog_info[cur_subprog + 1].start; into: subprog_end = env->subprog_info[cur_subprog + 1].start; There is no functional change by this patch set. No bpf selftest regression found after this patch set. Jiong Wang (3): bpf: unify main prog and subprog bpf: centre subprog information fields bpf: add faked "ending" subprog include/linux/bpf_verifier.h | 9 ++-- kernel/bpf/verifier.c | 118 +++++++++++++++++++++---------------------- 2 files changed, 65 insertions(+), 62 deletions(-) -- 2.7.4