diff options
Diffstat (limited to 'include/linux/bpf.h')
| -rw-r--r-- | include/linux/bpf.h | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 9a904f63f8c1..c201017b5730 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -96,6 +96,7 @@ enum bpf_return_type {  struct bpf_func_proto {  	u64 (*func)(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);  	bool gpl_only; +	bool pkt_access;  	enum bpf_return_type ret_type;  	enum bpf_arg_type arg1_type;  	enum bpf_arg_type arg2_type; @@ -138,6 +139,13 @@ enum bpf_reg_type {  	 */  	PTR_TO_PACKET,  	PTR_TO_PACKET_END,	 /* skb->data + headlen */ + +	/* PTR_TO_MAP_VALUE_ADJ is used for doing pointer math inside of a map +	 * elem value.  We only allow this if we can statically verify that +	 * access from this register are going to fall within the size of the +	 * map element. +	 */ +	PTR_TO_MAP_VALUE_ADJ,  };  struct bpf_prog; @@ -151,7 +159,8 @@ struct bpf_verifier_ops {  	 */  	bool (*is_valid_access)(int off, int size, enum bpf_access_type type,  				enum bpf_reg_type *reg_type); - +	int (*gen_prologue)(struct bpf_insn *insn, bool direct_write, +			    const struct bpf_prog *prog);  	u32 (*convert_ctx_access)(enum bpf_access_type type, int dst_reg,  				  int src_reg, int ctx_off,  				  struct bpf_insn *insn, struct bpf_prog *prog); | 
