bpf: Remove bpf_lsm_file_mprotect from sleepable list.
Technically the bpf programs can sleep while attached to bpf_lsm_file_mprotect, but such programs need to access user memory. So they're in might_fault() category. Which means they cannot be called from file_mprotect lsm hook that takes write lock on mm->mmap_lock. Adjust the test accordingly. Also add might_fault() to __bpf_prog_enter_sleepable() to catch such deadlocks early. Fixes:1e6c62a882
("bpf: Introduce sleepable BPF programs") Fixes:e68a144547
("selftests/bpf: Add sleepable tests") Reported-by: Yonghong Song <yhs@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20200831201651.82447-1-alexei.starovoitov@gmail.com
This commit is contained in:

committed by
Daniel Borkmann

parent
b69e56cf76
commit
f56407fa6e
@@ -11006,7 +11006,6 @@ static int check_attach_modify_return(struct bpf_prog *prog, unsigned long addr)
|
||||
/* non exhaustive list of sleepable bpf_lsm_*() functions */
|
||||
BTF_SET_START(btf_sleepable_lsm_hooks)
|
||||
#ifdef CONFIG_BPF_LSM
|
||||
BTF_ID(func, bpf_lsm_file_mprotect)
|
||||
BTF_ID(func, bpf_lsm_bprm_committed_creds)
|
||||
#else
|
||||
BTF_ID_UNUSED
|
||||
|
Reference in New Issue
Block a user