On Thu, 8 Jan 2026 23:23:03 +0900
"Masami Hiramatsu (Google)" <[email protected]> wrote:
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 9b07ad9eb284..741b16b54d90 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -1379,6 +1379,9 @@ static int __ftrace_set_clr_event(struct trace_array
> *tr, const char *match,
> {
> int ret;
>
> + if (trace_array_is_readonly(tr))
> + return -EPERM;
> +
> mutex_lock(&event_mutex);
> ret = __ftrace_set_clr_event_nolock(tr, match, sub, event, set, mod);
> mutex_unlock(&event_mutex);
> @@ -2817,8 +2820,8 @@ event_subsystem_dir(struct trace_array *tr, const char
> *name,
> } else
> __get_system(system);
>
> - /* ftrace only has directories no files */
> - if (strcmp(name, "ftrace") == 0)
> + /* ftrace only has directories no files, readonly instance too. */
> + if (strcmp(name, "ftrace") == 0 || trace_array_is_readonly(tr))
> nr_entries = 0;
> else
> nr_entries = ARRAY_SIZE(system_entries);
> @@ -2979,7 +2982,6 @@ event_create_dir(struct eventfs_inode *parent, struct
> trace_event_file *file)
> struct eventfs_inode *e_events;
> struct eventfs_inode *ei;
> const char *name;
> - int nr_entries;
> int ret;
> static struct eventfs_entry event_entries[] = {
> {
> @@ -3024,6 +3026,18 @@ event_create_dir(struct eventfs_inode *parent, struct
> trace_event_file *file)
> },
> #endif
> };
> + static struct eventfs_entry event_ro_entries[] = {
> + {
> + .name = "format",
> + .callback = event_callback,
> + },
> +#ifdef CONFIG_PERF_EVENTS
> + {
> + .name = "id",
> + .callback = event_callback,
> + },
> +#endif
> + };
Thinking about this hack again, it would be easier to maintain if I add
a readonly flag to each eventfs_entry and specify readonly when creating
the eventfs top directory.
Let me update it.
Thank you,
--
Masami Hiramatsu (Google) <[email protected]>