Re: [PATCH RFC bpf-next v1 21/32] bpf: Allow locking bpf_spin_lock global variables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 10 Sept 2022 at 00:57, Alexei Starovoitov
<alexei.starovoitov@xxxxxxxxx> wrote:
>
> On Fri, Sep 9, 2022 at 3:50 PM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote:
> >
> > So compared to the example above, user will just do:
> > struct bpf_spin_lock lock1;
> > struct bpf_spin_lock lock2;
> > struct bpf_list_head head __contains(...) __guarded_by(lock1);
> > struct bpf_list_head head2 __contains(...) __guarded_by(lock2);
> > struct bpf_rb_root root __contains(...) __guarded_by(lock2);
> >
> > It looks much cleaner to me from a user perspective. Just define what
> > protects what, which also doubles as great documentation.
>
> Unfortunately that doesn't work.
>
> We cannot magically exclude the locks from global data
> because of skel/mmap requirements.
> We cannot move the locks automatically, because it involves
> massive analysis of the code and fixing all offsets in libbpf.
> So users have to use a different section when using
> global locks, rb_root, list_head.
> Since a different section is needed anyway, it's better to keep
> one-lock-per-map-value for now.

Argh, right. Then they need one extra 'annotation', at that point it's
a bit questionable.
Also just realized reading your other reply that there are also
unanswered questions wrt what we do for BPF_F_LOCK.



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux