On 7/9/25 5:07 AM, Tao Chen wrote:
Attach_type will be set when link created from user, it is better to record attach_type in bpf_link directly suggested by Andrii. So add the attach_type field in bpf_link and move the sleepable field to the end just to fill the byte hole. Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx> Signed-off-by: Tao Chen <chen.dylane@xxxxxxxxx> --- drivers/net/netkit.c | 2 +- include/linux/bpf.h | 28 ++++++++++++++++----------- kernel/bpf/bpf_iter.c | 3 ++- kernel/bpf/bpf_struct_ops.c | 5 +++-- kernel/bpf/cgroup.c | 4 ++-- kernel/bpf/net_namespace.c | 2 +- kernel/bpf/syscall.c | 35 +++++++++++++++++++++------------- kernel/bpf/tcx.c | 3 ++- kernel/bpf/trampoline.c | 10 ++++++---- kernel/trace/bpf_trace.c | 4 ++-- net/bpf/bpf_dummy_struct_ops.c | 3 ++- net/core/dev.c | 3 ++- net/core/sock_map.c | 3 ++- net/netfilter/nf_bpf_link.c | 3 ++- 14 files changed, 66 insertions(+), 42 deletions(-)
[...]
diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 34dd90ec7fa..dd5070039de 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -1729,12 +1729,10 @@ struct bpf_link { enum bpf_link_type type; const struct bpf_link_ops *ops; struct bpf_prog *prog; - /* whether BPF link itself has "sleepable" semantics, which can differ - * from underlying BPF program having a "sleepable" semantics, as BPF - * link's semantics is determined by target attach hook - */ - bool sleepable; + u32 flags; + enum bpf_attach_type attach_type; + /* rcu is used before freeing, work can be used to schedule that * RCU-based freeing before that, so they never overlap */ @@ -1742,6 +1740,11 @@ struct bpf_link { struct rcu_head rcu; struct work_struct work; }; + /* whether BPF link itself has "sleepable" semantics, which can differ + * from underlying BPF program having a "sleepable" semantics, as BPF + * link's semantics is determined by target attach hook + */ + bool sleepable; };
lgtm, it looks a bit weird at the end here after rcu/work but in future if other attributes get added to the link obj and a new hole frees up we can move it up again. Definitely good the rationale for the move is documented in the commit msg. Acked-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>