On Tue, Jun 23, 2020 at 12:34:58PM +0200, Jakub Sitnicki wrote:

[ ... ]

> @@ -93,8 +108,16 @@ static int bpf_netns_link_update_prog(struct bpf_link 
> *link,
>               goto out_unlock;
>       }
>  
> +     run_array = rcu_dereference_protected(net->bpf.run_array[type],
> +                                           
> lockdep_is_held(&netns_bpf_mutex));
> +     if (run_array)
> +             ret = bpf_prog_array_replace_item(run_array, link->prog, 
> new_prog);
> +     else
When will this happen?

> +             ret = -ENOENT;
> +     if (ret)
> +             goto out_unlock;
> +
>       old_prog = xchg(&link->prog, new_prog);
> -     rcu_assign_pointer(net->bpf.progs[type], new_prog);
>       bpf_prog_put(old_prog);
>  
>  out_unlock:
> @@ -142,14 +165,38 @@ static const struct bpf_link_ops bpf_netns_link_ops = {
>       .show_fdinfo = bpf_netns_link_show_fdinfo,
>  };

Reply via email to