On Tue, Nov 09, 2021 at 05:16:14PM -0800, Andrii Nakryiko wrote: > On Mon, Nov 8, 2021 at 10:48 PM Dmitrii Banshchikov <me@xxxxxxxxxxxxx> wrote: > > > > On Mon, Nov 08, 2021 at 08:46:20PM +0400, Dmitrii Banshchikov wrote: > > > This patch adds tests that bpf_ktime_get_coarse_ns() and bpf_timer_* and > > > bpf_spin_lock()/bpf_spin_unlock() helpers are forbidden in tracing > > > progs as it may result in various locking issues. > > > > > > Signed-off-by: Dmitrii Banshchikov <me@xxxxxxxxxxxxx> > > > --- > > > tools/testing/selftests/bpf/test_verifier.c | 36 +++- > > > .../selftests/bpf/verifier/helper_allowed.c | 196 ++++++++++++++++++ > > > 2 files changed, 231 insertions(+), 1 deletion(-) > > > create mode 100644 tools/testing/selftests/bpf/verifier/helper_allowed.c > > > > > > diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c > > > index 25afe423b3f0..e16eab6fc3a9 100644 > > > --- a/tools/testing/selftests/bpf/test_verifier.c > > > +++ b/tools/testing/selftests/bpf/test_verifier.c > > > @@ -92,6 +92,7 @@ struct bpf_test { > > > int fixup_map_event_output[MAX_FIXUPS]; > > > int fixup_map_reuseport_array[MAX_FIXUPS]; > > > int fixup_map_ringbuf[MAX_FIXUPS]; > > > + int fixup_map_timer[MAX_FIXUPS]; > > > /* Expected verifier log output for result REJECT or VERBOSE_ACCEPT. > > > * Can be a tab-separated sequence of expected strings. An empty string > > > * means no log verification. > > > @@ -605,7 +606,7 @@ static int create_cgroup_storage(bool percpu) > > > * struct bpf_spin_lock l; > > > * }; > > > */ > > > -static const char btf_str_sec[] = "\0bpf_spin_lock\0val\0cnt\0l"; > > > +static const char btf_str_sec[] = "\0bpf_spin_lock\0val\0cnt\0l\0bpf_timer\0"; > > > > There is extra null byte at the end. > > Won't hurt, probably. But I wonder if it will be much easier to add > all those programs as C code and test from test_progs? Instead of all > this assembly. > > You can put all of them into a single file and have loop that disabled > all but one program at a time (using bpf_program__set_autoload()) and > loading it and validating that the load failed. WDYT? Will give it a try, thanks. -- Dmitrii Banshchikov