The BPF core does not need to modify instances of struct bpf_struct_ops anymore. Reflect this in the API so users can move their instances into read-only memory. Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx> --- include/linux/bpf.h | 2 +- include/linux/btf.h | 2 +- kernel/bpf/bpf_struct_ops.c | 2 +- kernel/bpf/btf.c | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index b734543b7a2b48e717d4f1be765e0198114b4f0a..a9267af9671b2bc8961cde24d2f79f473ab227d7 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -1814,7 +1814,7 @@ struct bpf_struct_ops_arg_info { }; struct bpf_struct_ops_desc { - struct bpf_struct_ops *st_ops; + const struct bpf_struct_ops *st_ops; const struct btf_type *type; const struct btf_type *value_type; diff --git a/include/linux/btf.h b/include/linux/btf.h index 4214e76c916861462e45e98690fcf461c05ca737..87a5ddef9fdc4b7f09d375ec5959abd6d07533a9 100644 --- a/include/linux/btf.h +++ b/include/linux/btf.h @@ -519,7 +519,7 @@ struct bpf_verifier_log; #if defined(CONFIG_BPF_JIT) && defined(CONFIG_BPF_SYSCALL) struct bpf_struct_ops; -int __register_bpf_struct_ops(struct bpf_struct_ops *st_ops); +int __register_bpf_struct_ops(const struct bpf_struct_ops *st_ops); const struct bpf_struct_ops_desc *bpf_struct_ops_find_value(struct btf *btf, u32 value_id); const struct bpf_struct_ops_desc *bpf_struct_ops_find(struct btf *btf, u32 type_id); #else diff --git a/kernel/bpf/bpf_struct_ops.c b/kernel/bpf/bpf_struct_ops.c index 7ee7c25d21d480d46b40b23ff8aec9d12ea81f68..967f0914d473fcde4a6ce3bb6ac976345daf8e88 100644 --- a/kernel/bpf/bpf_struct_ops.c +++ b/kernel/bpf/bpf_struct_ops.c @@ -314,7 +314,7 @@ int bpf_struct_ops_desc_init(struct bpf_struct_ops_desc *st_ops_desc, struct btf *btf, struct bpf_verifier_log *log) { - struct bpf_struct_ops *st_ops = st_ops_desc->st_ops; + const struct bpf_struct_ops *st_ops = st_ops_desc->st_ops; struct bpf_struct_ops_arg_info *arg_info; const struct btf_member *member; const struct btf_type *t; diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index e7a59e6462a9331d0acb17a88a4ebf641509c050..e3be8b7d6cbb268cf389bac9d3f889dbfd664a2e 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -9155,7 +9155,7 @@ bool btf_type_ids_nocast_alias(struct bpf_verifier_log *log, #ifdef CONFIG_BPF_JIT static int -btf_add_struct_ops(struct btf *btf, struct bpf_struct_ops *st_ops, +btf_add_struct_ops(struct btf *btf, const struct bpf_struct_ops *st_ops, struct bpf_verifier_log *log) { struct btf_struct_ops_tab *tab, *new_tab; @@ -9242,7 +9242,7 @@ bpf_struct_ops_find(struct btf *btf, u32 type_id) return NULL; } -int __register_bpf_struct_ops(struct bpf_struct_ops *st_ops) +int __register_bpf_struct_ops(const struct bpf_struct_ops *st_ops) { struct bpf_verifier_log *log; struct btf *btf; -- 2.47.1