bpf: selftest: Trigger a DCE on the whole subprog
This patch adds a test to trigger the DCE to remove the whole subprog to ensure the verifier does not depend on a stable subprog index. The DCE is done by testing a global const. Signed-off-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20211106014020.651638-1-kafai@fb.com
This commit is contained in:
parent
3990ed4c42
commit
d99341b373
|
@ -23,6 +23,16 @@ struct callback_ctx {
|
|||
int output;
|
||||
};
|
||||
|
||||
const volatile int bypass_unused = 1;
|
||||
|
||||
static __u64
|
||||
unused_subprog(struct bpf_map *map, __u32 *key, __u64 *val,
|
||||
struct callback_ctx *data)
|
||||
{
|
||||
data->output = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __u64
|
||||
check_array_elem(struct bpf_map *map, __u32 *key, __u64 *val,
|
||||
struct callback_ctx *data)
|
||||
|
@ -54,6 +64,8 @@ int test_pkt_access(struct __sk_buff *skb)
|
|||
|
||||
data.output = 0;
|
||||
bpf_for_each_map_elem(&arraymap, check_array_elem, &data, 0);
|
||||
if (!bypass_unused)
|
||||
bpf_for_each_map_elem(&arraymap, unused_subprog, &data, 0);
|
||||
arraymap_output = data.output;
|
||||
|
||||
bpf_for_each_map_elem(&percpu_map, check_percpu_elem, (void *)0, 0);
|
||||
|
|
Loading…
Reference in New Issue