Re: [PATCH v2 bpf-next 00/16] bpf: syscall program, FD array, loader program, light skeleton.
From: Alexei Starovoitov <hidden>
Date: 2021-04-23 23:16:49
Also in:
bpf
On Fri, Apr 23, 2021 at 02:36:43PM -0700, Yonghong Song wrote:
quoted
One thing that was not addressed from feedback is the name of new program type. Currently it's still: BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */Do you have plan for other non-bpf syscalls? Maybe use the name BPF_PROG_TYPE_BPF_SYSCALL? It will be really clear this is the program type you can execute bpf syscalls.
In this patch set it's already doing sys_bpf and sys_close syscalls :)
quoted
The concern raised was that it sounds like a program that should be attached to a syscall. Like BPF_PROG_TYPE_KPROBE is used to process kprobes. I've considered and rejected: BPF_PROG_TYPE_USER - too generic BPF_PROG_TYPE_USERCTX - ambiguous with uprobesUSERCTX probably not a good choice. People can write a program without context and put the ctx into a map and use it.quoted
BPF_PROG_TYPE_LOADER - ok-ish, but imo TYPE_SYSCALL is cleaner.User can write a program to do more than loading although I am not sure how useful it is compared to implementation in user space.
Exactly. Just BPF_PROG_TYPE_SYSCALL alone can be used as more generic equivalent to sys_close_range syscalls. If somebody needs to close a sparse set of FDs or get fd_to_be_closed from a map they can craft a bpf prog that would do that. Or if somebody wants to do a batched map processing... instead of doing sys_bpf() with BPF_MAP_UPDATE_BATCH they can craft a bpf prog. Plenty of use cases beyond LOADER. This patch set only allows BPF_PROG_TYPE_SYSCALL to be executed via prog_test_run, but I think it's safe to execute it upon entry to pretty much any syscall. So _SYSCALL suffix fits as both "a program that can execute syscalls" and as "a program that attaches to syscalls". The later is not implemented yet, but would fit right in.