ebpf: move read-only fields to bpf_prog and shrink bpf_prog_aux
[linux-2.6-microblaze.git] / include / linux / bpf.h
index bbfceb7..a1a7ff2 100644 (file)
@@ -32,13 +32,13 @@ struct bpf_map {
        u32 key_size;
        u32 value_size;
        u32 max_entries;
-       struct bpf_map_ops *ops;
+       const struct bpf_map_ops *ops;
        struct work_struct work;
 };
 
 struct bpf_map_type_list {
        struct list_head list_node;
-       struct bpf_map_ops *ops;
+       const struct bpf_map_ops *ops;
        enum bpf_map_type type;
 };
 
@@ -109,37 +109,47 @@ struct bpf_verifier_ops {
 
 struct bpf_prog_type_list {
        struct list_head list_node;
-       struct bpf_verifier_ops *ops;
+       const struct bpf_verifier_ops *ops;
        enum bpf_prog_type type;
 };
 
-void bpf_register_prog_type(struct bpf_prog_type_list *tl);
-
 struct bpf_prog;
 
 struct bpf_prog_aux {
        atomic_t refcnt;
-       bool is_gpl_compatible;
-       enum bpf_prog_type prog_type;
-       struct bpf_verifier_ops *ops;
-       struct bpf_map **used_maps;
        u32 used_map_cnt;
+       const struct bpf_verifier_ops *ops;
+       struct bpf_map **used_maps;
        struct bpf_prog *prog;
        struct work_struct work;
 };
 
 #ifdef CONFIG_BPF_SYSCALL
+void bpf_register_prog_type(struct bpf_prog_type_list *tl);
+
 void bpf_prog_put(struct bpf_prog *prog);
+struct bpf_prog *bpf_prog_get(u32 ufd);
 #else
-static inline void bpf_prog_put(struct bpf_prog *prog) {}
+static inline void bpf_register_prog_type(struct bpf_prog_type_list *tl)
+{
+}
+
+static inline struct bpf_prog *bpf_prog_get(u32 ufd)
+{
+       return ERR_PTR(-EOPNOTSUPP);
+}
+
+static inline void bpf_prog_put(struct bpf_prog *prog)
+{
+}
 #endif
-struct bpf_prog *bpf_prog_get(u32 ufd);
+
 /* verify correctness of eBPF program */
 int bpf_check(struct bpf_prog *fp, union bpf_attr *attr);
 
 /* verifier prototypes for helper functions called from eBPF programs */
-extern struct bpf_func_proto bpf_map_lookup_elem_proto;
-extern struct bpf_func_proto bpf_map_update_elem_proto;
-extern struct bpf_func_proto bpf_map_delete_elem_proto;
+extern const struct bpf_func_proto bpf_map_lookup_elem_proto;
+extern const struct bpf_func_proto bpf_map_update_elem_proto;
+extern const struct bpf_func_proto bpf_map_delete_elem_proto;
 
 #endif /* _LINUX_BPF_H */