OSDN Git Service

bpf: Return better error value in delete_elem for struct_ops map
authorMartin KaFai Lau <kafai@fb.com>
Thu, 5 Mar 2020 01:34:47 +0000 (17:34 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 5 Mar 2020 22:15:48 +0000 (14:15 -0800)
commit8e5290e710f4ffe8e9f8813e2ed0397a94d7b2f1
tree62f38b9dceaca7363c23fa392c3dedf95b34939e
parenta35a76faad53429b52a8937b69fdeee5b4e5f935
bpf: Return better error value in delete_elem for struct_ops map

The current always succeed behavior in bpf_struct_ops_map_delete_elem()
is not ideal for userspace tool.  It can be improved to return proper
error value.

If it is in TOBEFREE, it means unregistration has been already done
before but it is in progress and waiting for the subsystem to clear
the refcnt to zero, so -EINPROGRESS.

If it is INIT, it means the struct_ops has not been registered yet,
so -ENOENT.

Fixes: 85d33df357b6 ("bpf: Introduce BPF_MAP_TYPE_STRUCT_OPS")
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200305013447.535326-1-kafai@fb.com
kernel/bpf/bpf_struct_ops.c