On Thu, May 21, 2020 at 12:09 PM John Fastabend <john.fastabend@xxxxxxxxx> wrote: > > John Fastabend wrote: > > Andrii Nakryiko wrote: > > > On Thu, May 21, 2020 at 7:36 AM John Fastabend <john.fastabend@xxxxxxxxx> wrote: > > > > > > > > The test itself is not particularly useful but it encodes a common > > > > pattern we have. > > > > > > > > Namely do a sk storage lookup then depending on data here decide if > > > > we need to do more work or alternatively allow packet to PASS. Then > > > > if we need to do more work consult task_struct for more information > > > > about the running task. Finally based on this additional information > > > > drop or pass the data. In this case the suspicious check is not so > > > > realisitic but it encodes the general pattern and uses the helpers > > > > so we test the workflow. > > > > > > > > This is a load test to ensure verifier correctly handles this case. > > > > > > > > Signed-off-by: John Fastabend <john.fastabend@xxxxxxxxx> > > > > --- > > [...] > > > > > +static void test_skmsg_helpers(enum bpf_map_type map_type) > > > > +{ > > > > + struct test_skmsg_load_helpers *skel; > > > > + int err, map, verdict; > > > > + > > > > + skel = test_skmsg_load_helpers__open_and_load(); > > > > + if (!skel) { > > > > + FAIL("skeleton open/load failed"); > > > > + return; > > > > + } > > > > + > > > > + verdict = bpf_program__fd(skel->progs.prog_msg_verdict); > > > > + map = bpf_map__fd(skel->maps.sock_map); > > > > + > > > > + err = xbpf_prog_attach(verdict, map, BPF_SK_MSG_VERDICT, 0); > > > > + if (err) > > > > + return; > > > > + xbpf_prog_detach2(verdict, map, BPF_SK_MSG_VERDICT); > > > > > > no cleanup in this test, at all > > > > Guess we need __destroy(skel) here. > > > > As an aside how come if the program closes and refcnt drops the entire > > thing isn't destroyed. I didn't think there was any pinning happening > > in the __open_and_load piece. > > I guess these are in progs_test so we can't leave these around for > any following tests to trip over. OK. Same thing for patch 3 fwiw. Yep, exactly. It's a cooperative environment at the moment. We've talked about running tests in forked processes and in parallel, but until then, cleaning up is very important.