On 11/13/24 14:53, Alexis Lothoré (eBPF Foundation) wrote:

[...]

> +     ns = open_netns(TEST_NS);
> +     bpf_prog_detach2(prog_fd, 0, BPF_FLOW_DISSECTOR);
> +     close_netns(ns);

I would like to mention that I initially planned to directly delete the
namespace to perform the test cleanup, assuming it would be enough to consider
any non-root namespace flow_dissector to be removed. However I observed that it
made other tests dealing with flow_dissector starting to fail with -EEXIST,
despite all those tests being marked as "serial". I started examining this,
suspecting a real issue (a race between namespace deletion and flow dissector
attachment check, or a ns refcount issue) but before going further: is my
assumption right ? Should a mere namespace deletion be indeed enough to remove
the corresponding bpf flow dissector ? Or am I missing something ? If so I'll
keep examining this.

> +out_clean_ns:
> +     remove_netns(TEST_NS);
> +out_destroy_skel:
> +     bpf_flow__destroy(skel);
> +}
> +
>  static int create_tap(const char *ifname)
>  {
>       struct ifreq ifr = {
> 


-- 
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Reply via email to