BPF_MAP_LOOKUP_AND_DELETE_BATCH keys & values == NULL seems like a nice way to simply quickly clear a map. BPF_MAP_LOOKUP keys/values == NULL might be useful if we just want the values/keys and don't want to bother copying the keys/values... BPF_MAP_LOOKUP keys & values == NULL might be useful to count the number of populated entries. Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Stanislav Fomichev Signed-off-by: Maciej Żenczykowski --- kernel/bpf/hashtab.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index 5001131598e5..8fbdd000d9e0 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -1873,9 +1873,9 @@ __htab_map_lookup_and_delete_batch(struct bpf_map *map, rcu_read_unlock(); bpf_enable_instrumentation(); - if (bucket_cnt && (copy_to_user(ukeys + total * key_size, keys, + if (bucket_cnt && (ukeys && copy_to_user(ukeys + total * key_size, keys, key_size * bucket_cnt) || - copy_to_user(uvalues + total * value_size, values, + uvalues && copy_to_user(uvalues + total * value_size, values, value_size * bucket_cnt))) { ret = -EFAULT; goto after_loop; -- 2.51.0.rc1.163.g2494970778-goog