From: Hou Tao <houtao1@xxxxxxxxxx> Hi, The patch set aims to fix the problems found when inspecting the code related with maybe_wait_bpf_programs(). Patch #1 removes unnecessary invocation of maybe_wait_bpf_programs(). Patch #2 calls maybe_wait_bpf_programs() only once for batched update. Patch #3 adds the missed waiting when doing batched lookup_deletion on htab of maps. Patch #4 does wait only if the update or deletion operation succeeds. Patch #5 fixes the value of batch.count when memory allocation fails. Patch #6 does the similar thing as patch #4, except it fixes the problem for batched map operations. Patch #7 handles sleepable BPF program in maybe_wait_bpf_programs(), but it doesn't handle the bpf syscall from syscall program. Please see individual patches for more details. Comments are always welcome. Hou Tao (7): bpf: Remove unnecessary wait from bpf_map_copy_value() bpf: Call maybe_wait_bpf_programs() only once for generic_map_update_batch() bpf: Add missed maybe_wait_bpf_programs() for htab of maps bpf: Only call maybe_wait_bpf_programs() when map operation succeeds bpf: Set uattr->batch.count as zero before batched update or deletion bpf: Only call maybe_wait_bpf_programs() when at least one map operation succeeds bpf: Wait for sleepable BPF program in maybe_wait_bpf_programs() include/linux/bpf.h | 14 +++++------ kernel/bpf/hashtab.c | 20 ++++++++------- kernel/bpf/syscall.c | 60 +++++++++++++++++++++++++++++++------------- 3 files changed, 61 insertions(+), 33 deletions(-) -- 2.29.2