aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/bpf.h
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 03:04:05 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 03:04:05 -0500
commit92907cbbef8625bb3998d1eb385fc88f23c97a3f (patch)
tree15626ff9287e37c3cb81c7286d6db5a7fd77c854 /include/linux/bpf.h
parent15fbfccfe92c62ae8d1ecc647c44157ed01ac02e (diff)
parent1ec218373b8ebda821aec00bb156a9c94fad9cd4 (diff)
Merge tag 'v4.4-rc2' into drm-intel-next-queued
Linux 4.4-rc2 Backmerge to get at commit 1b0e3a049efe471c399674fd954500ce97438d30 Author: Imre Deak <imre.deak@intel.com> Date: Thu Nov 5 23:04:11 2015 +0200 drm/i915/skl: disable display side power well support for now so that we can proplery re-eanble skl power wells in -next. Conflicts are just adjacent lines changed, except for intel_fbdev.c where we need to interleave the changs. Nothing nefarious. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'include/linux/bpf.h')
-rw-r--r--include/linux/bpf.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index f57d7fed9ec3..de464e6683b6 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -10,7 +10,6 @@
10#include <uapi/linux/bpf.h> 10#include <uapi/linux/bpf.h>
11#include <linux/workqueue.h> 11#include <linux/workqueue.h>
12#include <linux/file.h> 12#include <linux/file.h>
13#include <linux/perf_event.h>
14 13
15struct bpf_map; 14struct bpf_map;
16 15
@@ -37,6 +36,8 @@ struct bpf_map {
37 u32 key_size; 36 u32 key_size;
38 u32 value_size; 37 u32 value_size;
39 u32 max_entries; 38 u32 max_entries;
39 u32 pages;
40 struct user_struct *user;
40 const struct bpf_map_ops *ops; 41 const struct bpf_map_ops *ops;
41 struct work_struct work; 42 struct work_struct work;
42}; 43};
@@ -101,6 +102,8 @@ enum bpf_access_type {
101 BPF_WRITE = 2 102 BPF_WRITE = 2
102}; 103};
103 104
105struct bpf_prog;
106
104struct bpf_verifier_ops { 107struct bpf_verifier_ops {
105 /* return eBPF function prototype for verification */ 108 /* return eBPF function prototype for verification */
106 const struct bpf_func_proto *(*get_func_proto)(enum bpf_func_id func_id); 109 const struct bpf_func_proto *(*get_func_proto)(enum bpf_func_id func_id);
@@ -112,7 +115,7 @@ struct bpf_verifier_ops {
112 115
113 u32 (*convert_ctx_access)(enum bpf_access_type type, int dst_reg, 116 u32 (*convert_ctx_access)(enum bpf_access_type type, int dst_reg,
114 int src_reg, int ctx_off, 117 int src_reg, int ctx_off,
115 struct bpf_insn *insn); 118 struct bpf_insn *insn, struct bpf_prog *prog);
116}; 119};
117 120
118struct bpf_prog_type_list { 121struct bpf_prog_type_list {
@@ -121,14 +124,13 @@ struct bpf_prog_type_list {
121 enum bpf_prog_type type; 124 enum bpf_prog_type type;
122}; 125};
123 126
124struct bpf_prog;
125
126struct bpf_prog_aux { 127struct bpf_prog_aux {
127 atomic_t refcnt; 128 atomic_t refcnt;
128 u32 used_map_cnt; 129 u32 used_map_cnt;
129 const struct bpf_verifier_ops *ops; 130 const struct bpf_verifier_ops *ops;
130 struct bpf_map **used_maps; 131 struct bpf_map **used_maps;
131 struct bpf_prog *prog; 132 struct bpf_prog *prog;
133 struct user_struct *user;
132 union { 134 union {
133 struct work_struct work; 135 struct work_struct work;
134 struct rcu_head rcu; 136 struct rcu_head rcu;
@@ -165,9 +167,18 @@ struct bpf_prog *bpf_prog_get(u32 ufd);
165void bpf_prog_put(struct bpf_prog *prog); 167void bpf_prog_put(struct bpf_prog *prog);
166void bpf_prog_put_rcu(struct bpf_prog *prog); 168void bpf_prog_put_rcu(struct bpf_prog *prog);
167 169
168struct bpf_map *bpf_map_get(struct fd f); 170struct bpf_map *bpf_map_get(u32 ufd);
171struct bpf_map *__bpf_map_get(struct fd f);
169void bpf_map_put(struct bpf_map *map); 172void bpf_map_put(struct bpf_map *map);
170 173
174extern int sysctl_unprivileged_bpf_disabled;
175
176int bpf_map_new_fd(struct bpf_map *map);
177int bpf_prog_new_fd(struct bpf_prog *prog);
178
179int bpf_obj_pin_user(u32 ufd, const char __user *pathname);
180int bpf_obj_get_user(const char __user *pathname);
181
171/* verify correctness of eBPF program */ 182/* verify correctness of eBPF program */
172int bpf_check(struct bpf_prog **fp, union bpf_attr *attr); 183int bpf_check(struct bpf_prog **fp, union bpf_attr *attr);
173#else 184#else
@@ -190,7 +201,6 @@ extern const struct bpf_func_proto bpf_map_lookup_elem_proto;
190extern const struct bpf_func_proto bpf_map_update_elem_proto; 201extern const struct bpf_func_proto bpf_map_update_elem_proto;
191extern const struct bpf_func_proto bpf_map_delete_elem_proto; 202extern const struct bpf_func_proto bpf_map_delete_elem_proto;
192 203
193extern const struct bpf_func_proto bpf_perf_event_read_proto;
194extern const struct bpf_func_proto bpf_get_prandom_u32_proto; 204extern const struct bpf_func_proto bpf_get_prandom_u32_proto;
195extern const struct bpf_func_proto bpf_get_smp_processor_id_proto; 205extern const struct bpf_func_proto bpf_get_smp_processor_id_proto;
196extern const struct bpf_func_proto bpf_tail_call_proto; 206extern const struct bpf_func_proto bpf_tail_call_proto;
@@ -201,4 +211,8 @@ extern const struct bpf_func_proto bpf_get_current_comm_proto;
201extern const struct bpf_func_proto bpf_skb_vlan_push_proto; 211extern const struct bpf_func_proto bpf_skb_vlan_push_proto;
202extern const struct bpf_func_proto bpf_skb_vlan_pop_proto; 212extern const struct bpf_func_proto bpf_skb_vlan_pop_proto;
203 213
214/* Shared helpers among cBPF and eBPF. */
215void bpf_user_rnd_init_once(void);
216u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);
217
204#endif /* _LINUX_BPF_H */ 218#endif /* _LINUX_BPF_H */