• Dave Marchevsky's avatar
    bpf: Allow bpf_spin_{lock,unlock} in sleepable progs · 5861d1e8
    Dave Marchevsky authored
    Commit 9e7a4d98 ("bpf: Allow LSM programs to use bpf spin locks")
    disabled bpf_spin_lock usage in sleepable progs, stating:
    
     Sleepable LSM programs can be preempted which means that allowng spin
     locks will need more work (disabling preemption and the verifier
     ensuring that no sleepable helpers are called when a spin lock is
     held).
    
    This patch disables preemption before grabbing bpf_spin_lock. The second
    requirement above "no sleepable helpers are called when a spin lock is
    held" is implicitly enforced by current verifier logic due to helper
    calls in spin_lock CS being disabled except for a few exceptions, none
    of which sleep.
    
    Due to above preemption changes, bpf_spin_lock CS can also be considered
    a RCU CS, so verifier's in_rcu_cs check is modified to account for this.
    Signed-off-by: default avatarDave Marchevsky <davemarchevsky@fb.com>
    Link: https://lore.kernel.org/r/20230821193311.3290257-7-davemarchevsky@fb.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    5861d1e8
verifier.c 581 KB