bpf: switch maps to CLASS(fd, ...)
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 30 Jul 2024 05:16:04 +0000 (01:16 -0400)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 13 Aug 2024 22:58:17 +0000 (15:58 -0700)
commit55f325958ccc41eaea43eb4546d4dc77c1b5ef8a
tree3a67490e9e4a0ce16ffc6c7c92d36cb5c87c834a
parent535ead44ffd08479212e31729a7118bd4e9ac699
bpf: switch maps to CLASS(fd, ...)

        Calling conventions for __bpf_map_get() would be more convenient
if it left fpdut() on failure to callers.  Makes for simpler logics
in the callers.

Among other things, the proof of memory safety no longer has to
rely upon file->private_data never being ERR_PTR(...) for bpffs files.
Original calling conventions made it impossible for the caller to tell
whether __bpf_map_get() has returned ERR_PTR(-EINVAL) because it has found
the file not be a bpf map one (in which case it would've done fdput())
or because it found that ERR_PTR(-EINVAL) in file->private_data of a
bpf map file (in which case fdput() would _not_ have been done).

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
include/linux/bpf.h
kernel/bpf/map_in_map.c
kernel/bpf/syscall.c
kernel/bpf/verifier.c
net/core/sock_map.c