bpf: do not rely on ALLOW_ERROR_INJECTION for fmod_ret
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Tue, 6 Dec 2022 14:59:32 +0000 (15:59 +0100)
committerBenjamin Tissoires <benjamin.tissoires@redhat.com>
Wed, 7 Dec 2022 14:31:08 +0000 (15:31 +0100)
commit5b481acab4ce017fda8166fa9428511da41109e5
tree0a82297c76a7737d25d89fab46842ac4d58a72c7
parent9c730fe10493d309f402cbd28ad539379b13a24d
bpf: do not rely on ALLOW_ERROR_INJECTION for fmod_ret

The current way of expressing that a non-bpf kernel component is willing
to accept that bpf programs can be attached to it and that they can change
the return value is to abuse ALLOW_ERROR_INJECTION.
This is debated in the link below, and the result is that it is not a
reasonable thing to do.

Reuse the kfunc declaration structure to also tag the kernel functions
we want to be fmodret. This way we can control from any subsystem which
functions are being modified by bpf without touching the verifier.

Link: https://lore.kernel.org/all/20221121104403.1545f9b5@gandalf.local.home/
Suggested-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/r/20221206145936.922196-2-benjamin.tissoires@redhat.com
include/linux/btf.h
kernel/bpf/btf.c
kernel/bpf/verifier.c
net/bpf/test_run.c