Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bpf: Call maybe_wait_bpf_programs() only once from generic_map_delete_batch()

As stated in the comment found in maybe_wait_bpf_programs(),
the synchronize_rcu() barrier is only needed before returning
to userspace, not after each deletion in the batch.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/bpf/20220218181801.2971275-1-eric.dumazet@gmail.com

authored by

Eric Dumazet and committed by
Daniel Borkmann
9087c6ff 086d4905

+2 -1
+2 -1
kernel/bpf/syscall.c
··· 1352 1352 err = map->ops->map_delete_elem(map, key); 1353 1353 rcu_read_unlock(); 1354 1354 bpf_enable_instrumentation(); 1355 - maybe_wait_bpf_programs(map); 1356 1355 if (err) 1357 1356 break; 1358 1357 cond_resched(); ··· 1360 1361 err = -EFAULT; 1361 1362 1362 1363 kvfree(key); 1364 + 1365 + maybe_wait_bpf_programs(map); 1363 1366 return err; 1364 1367 } 1365 1368