Commit 96a94cc5 authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller

bpf: reference may_access_skb() from __bpf_prog_run()

It took me quite some time to figure out how this was linked,
so in order to save the next person the effort of finding it
add a comment in __bpf_prog_run() that indicates what exactly
determines that a program can access the ctx == skb.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 17c3060b
...@@ -1162,12 +1162,12 @@ static unsigned int __bpf_prog_run(void *ctx, const struct bpf_insn *insn) ...@@ -1162,12 +1162,12 @@ static unsigned int __bpf_prog_run(void *ctx, const struct bpf_insn *insn)
LD_ABS_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + imm32)) */ LD_ABS_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + imm32)) */
off = IMM; off = IMM;
load_word: load_word:
/* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are only
* only appearing in the programs where ctx == * appearing in the programs where ctx == skb
* skb. All programs keep 'ctx' in regs[BPF_REG_CTX] * (see may_access_skb() in the verifier). All programs
* == BPF_R6, bpf_convert_filter() saves it in BPF_R6, * keep 'ctx' in regs[BPF_REG_CTX] == BPF_R6,
* internal BPF verifier will check that BPF_R6 == * bpf_convert_filter() saves it in BPF_R6, internal BPF
* ctx. * verifier will check that BPF_R6 == ctx.
* *
* BPF_ABS and BPF_IND are wrappers of function calls, * BPF_ABS and BPF_IND are wrappers of function calls,
* so they scratch BPF_R1-BPF_R5 registers, preserve * so they scratch BPF_R1-BPF_R5 registers, preserve
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment