ebpf: remove self-assignment in interpreter's tail call
ARG1 = BPF_R1 as it stands, evaluates to regs[BPF_REG_1] = regs[BPF_REG_1] and thus has no effect. Add a comment instead, explaining what happens and why it's okay to just remove it. Since from user space side, a tail call is invoked as a pseudo helper function via bpf_tail_call_proto, the verifier checks the arguments just like with any other helper function and makes sure that the first argument (regs[BPF_REG_1])'s type is ARG_PTR_TO_CTX. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
de551f2eb2
Коммит
c4675f9353
|
@ -453,7 +453,11 @@ select_insn:
|
|||
if (unlikely(!prog))
|
||||
goto out;
|
||||
|
||||
ARG1 = BPF_R1;
|
||||
/* ARG1 at this point is guaranteed to point to CTX from
|
||||
* the verifier side due to the fact that the tail call is
|
||||
* handeled like a helper, that is, bpf_tail_call_proto,
|
||||
* where arg1_type is ARG_PTR_TO_CTX.
|
||||
*/
|
||||
insn = prog->insnsi;
|
||||
goto select_insn;
|
||||
out:
|
||||
|
|
Загрузка…
Ссылка в новой задаче