diff options
author | Alexei Starovoitov <ast@plumgrid.com> | 2014-11-13 20:36:50 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-18 13:44:00 -0500 |
commit | 7943c0f329d33f531607d66f5781f2210e1e278c (patch) | |
tree | c5694485117f718c42b0363d2c09c4c746bfe376 /kernel | |
parent | d0003ec01c667b731c139e23de3306a8b328ccf5 (diff) |
bpf: remove test map scaffolding and user proper types
proper types and function helpers are ready. Use them in verifier testsuite.
Remove temporary stubs
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/bpf/test_stub.c | 56 |
1 files changed, 9 insertions, 47 deletions
diff --git a/kernel/bpf/test_stub.c b/kernel/bpf/test_stub.c index fcaddff4003e..0ceae1e6e8b5 100644 --- a/kernel/bpf/test_stub.c +++ b/kernel/bpf/test_stub.c | |||
@@ -18,26 +18,18 @@ struct bpf_context { | |||
18 | u64 arg2; | 18 | u64 arg2; |
19 | }; | 19 | }; |
20 | 20 | ||
21 | static u64 test_func(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5) | ||
22 | { | ||
23 | return 0; | ||
24 | } | ||
25 | |||
26 | static struct bpf_func_proto test_funcs[] = { | ||
27 | [BPF_FUNC_unspec] = { | ||
28 | .func = test_func, | ||
29 | .gpl_only = true, | ||
30 | .ret_type = RET_PTR_TO_MAP_VALUE_OR_NULL, | ||
31 | .arg1_type = ARG_CONST_MAP_PTR, | ||
32 | .arg2_type = ARG_PTR_TO_MAP_KEY, | ||
33 | }, | ||
34 | }; | ||
35 | |||
36 | static const struct bpf_func_proto *test_func_proto(enum bpf_func_id func_id) | 21 | static const struct bpf_func_proto *test_func_proto(enum bpf_func_id func_id) |
37 | { | 22 | { |
38 | if (func_id < 0 || func_id >= ARRAY_SIZE(test_funcs)) | 23 | switch (func_id) { |
24 | case BPF_FUNC_map_lookup_elem: | ||
25 | return &bpf_map_lookup_elem_proto; | ||
26 | case BPF_FUNC_map_update_elem: | ||
27 | return &bpf_map_update_elem_proto; | ||
28 | case BPF_FUNC_map_delete_elem: | ||
29 | return &bpf_map_delete_elem_proto; | ||
30 | default: | ||
39 | return NULL; | 31 | return NULL; |
40 | return &test_funcs[func_id]; | 32 | } |
41 | } | 33 | } |
42 | 34 | ||
43 | static const struct bpf_context_access { | 35 | static const struct bpf_context_access { |
@@ -78,38 +70,8 @@ static struct bpf_prog_type_list tl_prog = { | |||
78 | .type = BPF_PROG_TYPE_UNSPEC, | 70 | .type = BPF_PROG_TYPE_UNSPEC, |
79 | }; | 71 | }; |
80 | 72 | ||
81 | static struct bpf_map *test_map_alloc(union bpf_attr *attr) | ||
82 | { | ||
83 | struct bpf_map *map; | ||
84 | |||
85 | map = kzalloc(sizeof(*map), GFP_USER); | ||
86 | if (!map) | ||
87 | return ERR_PTR(-ENOMEM); | ||
88 | |||
89 | map->key_size = attr->key_size; | ||
90 | map->value_size = attr->value_size; | ||
91 | map->max_entries = attr->max_entries; | ||
92 | return map; | ||
93 | } | ||
94 | |||
95 | static void test_map_free(struct bpf_map *map) | ||
96 | { | ||
97 | kfree(map); | ||
98 | } | ||
99 | |||
100 | static struct bpf_map_ops test_map_ops = { | ||
101 | .map_alloc = test_map_alloc, | ||
102 | .map_free = test_map_free, | ||
103 | }; | ||
104 | |||
105 | static struct bpf_map_type_list tl_map = { | ||
106 | .ops = &test_map_ops, | ||
107 | .type = BPF_MAP_TYPE_UNSPEC, | ||
108 | }; | ||
109 | |||
110 | static int __init register_test_ops(void) | 73 | static int __init register_test_ops(void) |
111 | { | 74 | { |
112 | bpf_register_map_type(&tl_map); | ||
113 | bpf_register_prog_type(&tl_prog); | 75 | bpf_register_prog_type(&tl_prog); |
114 | return 0; | 76 | return 0; |
115 | } | 77 | } |