Yonghong Song wrote: > Add two tests for PTR_TO_BTF_ID vs. null ptr comparison, > one for PTR_TO_BTF_ID in the ctx structure and the > other for PTR_TO_BTF_ID after one level pointer chasing. > In both cases, the test ensures condition is not > removed. > > For example, for this test > struct bpf_fentry_test_t { > struct bpf_fentry_test_t *a; > }; > int BPF_PROG(test7, struct bpf_fentry_test_t *arg) > { > if (arg == 0) > test7_result = 1; > return 0; > } > Before the previous verifier change, we have xlated codes: > int test7(long long unsigned int * ctx): > ; int BPF_PROG(test7, struct bpf_fentry_test_t *arg) > 0: (79) r1 = *(u64 *)(r1 +0) > ; int BPF_PROG(test7, struct bpf_fentry_test_t *arg) > 1: (b4) w0 = 0 > 2: (95) exit > After the previous verifier change, we have: > int test7(long long unsigned int * ctx): > ; int BPF_PROG(test7, struct bpf_fentry_test_t *arg) > 0: (79) r1 = *(u64 *)(r1 +0) > ; if (arg == 0) > 1: (55) if r1 != 0x0 goto pc+4 > ; test7_result = 1; > 2: (18) r1 = map[id:6][0]+48 > 4: (b7) r2 = 1 > 5: (7b) *(u64 *)(r1 +0) = r2 > ; int BPF_PROG(test7, struct bpf_fentry_test_t *arg) > 6: (b4) w0 = 0 > 7: (95) exit > > Cc: Andrii Nakryiko <andriin@xxxxxx> > Cc: John Fastabend <john.fastabend@xxxxxxxxx> > Cc: Wenbo Zhang <ethercflow@xxxxxxxxx> > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- Thanks. Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>