mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
tracing: Constify struct event_trigger_ops
'event_trigger_ops mwifiex_if_ops' are not modified in these drivers. Constifying these structures moves some data to a read-only section, so increase overall security, especially when the structure holds some function pointers. On a x86_64, with allmodconfig, as an example: Before: ====== text data bss dec hex filename 31368 9024 6200 46592 b600 kernel/trace/trace_events_trigger.o After: ===== text data bss dec hex filename 31752 8608 6200 46560 b5e0 kernel/trace/trace_events_trigger.o Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/66e8f990e649678e4be37d4d1a19158ca0dea2f4.1741521295.git.christophe.jaillet@wanadoo.fr Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
a926d15a79
commit
502d2e71a8
@ -1714,7 +1714,7 @@ struct event_trigger_data {
|
||||
unsigned long count;
|
||||
int ref;
|
||||
int flags;
|
||||
struct event_trigger_ops *ops;
|
||||
const struct event_trigger_ops *ops;
|
||||
struct event_command *cmd_ops;
|
||||
struct event_filter __rcu *filter;
|
||||
char *filter_str;
|
||||
@ -1959,7 +1959,7 @@ struct event_command {
|
||||
int (*set_filter)(char *filter_str,
|
||||
struct event_trigger_data *data,
|
||||
struct trace_event_file *file);
|
||||
struct event_trigger_ops *(*get_trigger_ops)(char *cmd, char *param);
|
||||
const struct event_trigger_ops *(*get_trigger_ops)(char *cmd, char *param);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -478,7 +478,7 @@ static void eprobe_trigger_func(struct event_trigger_data *data,
|
||||
__eprobe_trace_func(edata, rec);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops eprobe_trigger_ops = {
|
||||
static const struct event_trigger_ops eprobe_trigger_ops = {
|
||||
.trigger = eprobe_trigger_func,
|
||||
.print = eprobe_trigger_print,
|
||||
.init = eprobe_trigger_init,
|
||||
@ -507,8 +507,8 @@ static void eprobe_trigger_unreg_func(char *glob,
|
||||
|
||||
}
|
||||
|
||||
static struct event_trigger_ops *eprobe_trigger_get_ops(char *cmd,
|
||||
char *param)
|
||||
static const struct event_trigger_ops *eprobe_trigger_get_ops(char *cmd,
|
||||
char *param)
|
||||
{
|
||||
return &eprobe_trigger_ops;
|
||||
}
|
||||
|
@ -6191,7 +6191,7 @@ static void event_hist_trigger_free(struct event_trigger_data *data)
|
||||
}
|
||||
}
|
||||
|
||||
static struct event_trigger_ops event_hist_trigger_ops = {
|
||||
static const struct event_trigger_ops event_hist_trigger_ops = {
|
||||
.trigger = event_hist_trigger,
|
||||
.print = event_hist_trigger_print,
|
||||
.init = event_hist_trigger_init,
|
||||
@ -6223,15 +6223,15 @@ static void event_hist_trigger_named_free(struct event_trigger_data *data)
|
||||
}
|
||||
}
|
||||
|
||||
static struct event_trigger_ops event_hist_trigger_named_ops = {
|
||||
static const struct event_trigger_ops event_hist_trigger_named_ops = {
|
||||
.trigger = event_hist_trigger,
|
||||
.print = event_hist_trigger_print,
|
||||
.init = event_hist_trigger_named_init,
|
||||
.free = event_hist_trigger_named_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops *event_hist_get_trigger_ops(char *cmd,
|
||||
char *param)
|
||||
static const struct event_trigger_ops *event_hist_get_trigger_ops(char *cmd,
|
||||
char *param)
|
||||
{
|
||||
return &event_hist_trigger_ops;
|
||||
}
|
||||
@ -6826,38 +6826,38 @@ hist_enable_count_trigger(struct event_trigger_data *data,
|
||||
hist_enable_trigger(data, buffer, rec, event);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops hist_enable_trigger_ops = {
|
||||
static const struct event_trigger_ops hist_enable_trigger_ops = {
|
||||
.trigger = hist_enable_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops hist_enable_count_trigger_ops = {
|
||||
static const struct event_trigger_ops hist_enable_count_trigger_ops = {
|
||||
.trigger = hist_enable_count_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops hist_disable_trigger_ops = {
|
||||
static const struct event_trigger_ops hist_disable_trigger_ops = {
|
||||
.trigger = hist_enable_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops hist_disable_count_trigger_ops = {
|
||||
static const struct event_trigger_ops hist_disable_count_trigger_ops = {
|
||||
.trigger = hist_enable_count_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops *
|
||||
static const struct event_trigger_ops *
|
||||
hist_enable_get_trigger_ops(char *cmd, char *param)
|
||||
{
|
||||
struct event_trigger_ops *ops;
|
||||
const struct event_trigger_ops *ops;
|
||||
bool enable;
|
||||
|
||||
enable = (strcmp(cmd, ENABLE_HIST_STR) == 0);
|
||||
|
@ -825,7 +825,7 @@ struct event_trigger_data *event_trigger_alloc(struct event_command *cmd_ops,
|
||||
void *private_data)
|
||||
{
|
||||
struct event_trigger_data *trigger_data;
|
||||
struct event_trigger_ops *trigger_ops;
|
||||
const struct event_trigger_ops *trigger_ops;
|
||||
|
||||
trigger_ops = cmd_ops->get_trigger_ops(cmd, param);
|
||||
|
||||
@ -1367,38 +1367,38 @@ traceoff_trigger_print(struct seq_file *m, struct event_trigger_data *data)
|
||||
data->filter_str);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops traceon_trigger_ops = {
|
||||
static const struct event_trigger_ops traceon_trigger_ops = {
|
||||
.trigger = traceon_trigger,
|
||||
.print = traceon_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops traceon_count_trigger_ops = {
|
||||
static const struct event_trigger_ops traceon_count_trigger_ops = {
|
||||
.trigger = traceon_count_trigger,
|
||||
.print = traceon_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops traceoff_trigger_ops = {
|
||||
static const struct event_trigger_ops traceoff_trigger_ops = {
|
||||
.trigger = traceoff_trigger,
|
||||
.print = traceoff_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops traceoff_count_trigger_ops = {
|
||||
static const struct event_trigger_ops traceoff_count_trigger_ops = {
|
||||
.trigger = traceoff_count_trigger,
|
||||
.print = traceoff_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops *
|
||||
static const struct event_trigger_ops *
|
||||
onoff_get_trigger_ops(char *cmd, char *param)
|
||||
{
|
||||
struct event_trigger_ops *ops;
|
||||
const struct event_trigger_ops *ops;
|
||||
|
||||
/* we register both traceon and traceoff to this callback */
|
||||
if (strcmp(cmd, "traceon") == 0)
|
||||
@ -1491,21 +1491,21 @@ snapshot_trigger_print(struct seq_file *m, struct event_trigger_data *data)
|
||||
data->filter_str);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops snapshot_trigger_ops = {
|
||||
static const struct event_trigger_ops snapshot_trigger_ops = {
|
||||
.trigger = snapshot_trigger,
|
||||
.print = snapshot_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops snapshot_count_trigger_ops = {
|
||||
static const struct event_trigger_ops snapshot_count_trigger_ops = {
|
||||
.trigger = snapshot_count_trigger,
|
||||
.print = snapshot_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops *
|
||||
static const struct event_trigger_ops *
|
||||
snapshot_get_trigger_ops(char *cmd, char *param)
|
||||
{
|
||||
return param ? &snapshot_count_trigger_ops : &snapshot_trigger_ops;
|
||||
@ -1586,21 +1586,21 @@ stacktrace_trigger_print(struct seq_file *m, struct event_trigger_data *data)
|
||||
data->filter_str);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops stacktrace_trigger_ops = {
|
||||
static const struct event_trigger_ops stacktrace_trigger_ops = {
|
||||
.trigger = stacktrace_trigger,
|
||||
.print = stacktrace_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops stacktrace_count_trigger_ops = {
|
||||
static const struct event_trigger_ops stacktrace_count_trigger_ops = {
|
||||
.trigger = stacktrace_count_trigger,
|
||||
.print = stacktrace_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops *
|
||||
static const struct event_trigger_ops *
|
||||
stacktrace_get_trigger_ops(char *cmd, char *param)
|
||||
{
|
||||
return param ? &stacktrace_count_trigger_ops : &stacktrace_trigger_ops;
|
||||
@ -1711,28 +1711,28 @@ void event_enable_trigger_free(struct event_trigger_data *data)
|
||||
}
|
||||
}
|
||||
|
||||
static struct event_trigger_ops event_enable_trigger_ops = {
|
||||
static const struct event_trigger_ops event_enable_trigger_ops = {
|
||||
.trigger = event_enable_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops event_enable_count_trigger_ops = {
|
||||
static const struct event_trigger_ops event_enable_count_trigger_ops = {
|
||||
.trigger = event_enable_count_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops event_disable_trigger_ops = {
|
||||
static const struct event_trigger_ops event_disable_trigger_ops = {
|
||||
.trigger = event_enable_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
.free = event_enable_trigger_free,
|
||||
};
|
||||
|
||||
static struct event_trigger_ops event_disable_count_trigger_ops = {
|
||||
static const struct event_trigger_ops event_disable_count_trigger_ops = {
|
||||
.trigger = event_enable_count_trigger,
|
||||
.print = event_enable_trigger_print,
|
||||
.init = event_trigger_init,
|
||||
@ -1916,10 +1916,10 @@ void event_enable_unregister_trigger(char *glob,
|
||||
data->ops->free(data);
|
||||
}
|
||||
|
||||
static struct event_trigger_ops *
|
||||
static const struct event_trigger_ops *
|
||||
event_enable_get_trigger_ops(char *cmd, char *param)
|
||||
{
|
||||
struct event_trigger_ops *ops;
|
||||
const struct event_trigger_ops *ops;
|
||||
bool enable;
|
||||
|
||||
#ifdef CONFIG_HIST_TRIGGERS
|
||||
|
Loading…
x
Reference in New Issue
Block a user