]> asedeno.scripts.mit.edu Git - linux.git/commit
bpf: add faked "ending" subprog
authorJiong Wang <jiong.wang@netronome.com>
Wed, 2 May 2018 20:17:19 +0000 (16:17 -0400)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 4 May 2018 09:58:36 +0000 (11:58 +0200)
commit4cb3d99c84ccbf728ff0e381c7c9815c3fa2bd5e
treed6a6c3f464d0a9588f678b61dca9b9d81e670263
parent9c8105bd4402236b1bb0f8f10709c5cec1440a0c
bpf: add faked "ending" subprog

There are quite a few code snippet like the following in verifier:

       subprog_start = 0;
       if (env->subprog_cnt == cur_subprog + 1)
               subprog_end = insn_cnt;
       else
               subprog_end = env->subprog_info[cur_subprog + 1].start;

The reason is there is no marker in subprog_info array to tell the end of
it.

We could resolve this issue by introducing a faked "ending" subprog.
The special "ending" subprog is with "insn_cnt" as start offset, so it is
serving as the end mark whenever we iterate over all subprogs.

Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
kernel/bpf/verifier.c