From 0dd121e0e6978305d1043f358ebc6972f4e423ab Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 28 Aug 2023 15:31:02 +0000 Subject: [PATCH] Revert "tracing: Show real address for trace event arguments" This reverts commit 840ce9cfc86f89c335625ec297acc0375f82e19b which is commit efbbdaa22bb78761bff8dfdde027ad04bedd47ce upstream. It breaks the Android kernel abi, and is not needed for any Android devices at this time. If it is needed in the future, it can be brought back in an abi-safe way. Bug: 161946584 Change-Id: I6ff33f14fe22565b33e5c760f5bbfc94b17006b3 Signed-off-by: Greg Kroah-Hartman --- include/linux/trace_events.h | 4 -- include/trace/trace_events.h | 2 +- kernel/trace/trace.c | 71 +----------------------------------- kernel/trace/trace.h | 2 - kernel/trace/trace_output.c | 12 +----- 5 files changed, 3 insertions(+), 88 deletions(-) diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index e418065c2c90..c57b79301a75 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -55,8 +55,6 @@ struct trace_event; int trace_raw_output_prep(struct trace_iterator *iter, struct trace_event *event); -extern __printf(2, 3) -void trace_event_printf(struct trace_iterator *iter, const char *fmt, ...); /* * The trace entry - the most basic unit of tracing. This is what @@ -89,8 +87,6 @@ struct trace_iterator { unsigned long iter_flags; void *temp; /* temp holder */ unsigned int temp_size; - char *fmt; /* modified format holder */ - unsigned int fmt_size; /* trace_seq for __print_flags() and __print_symbolic() etc. */ struct trace_seq tmp_seq; diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h index 29917bce6dbc..717d388ecbd6 100644 --- a/include/trace/trace_events.h +++ b/include/trace/trace_events.h @@ -364,7 +364,7 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags, \ if (ret != TRACE_TYPE_HANDLED) \ return ret; \ \ - trace_event_printf(iter, print); \ + trace_seq_printf(s, print); \ \ return trace_handle_return(s); \ } \ diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 80af015a21e7..22d2255e8316 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -3583,62 +3583,6 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu, return next; } -#define STATIC_FMT_BUF_SIZE 128 -static char static_fmt_buf[STATIC_FMT_BUF_SIZE]; - -static char *trace_iter_expand_format(struct trace_iterator *iter) -{ - char *tmp; - - if (iter->fmt == static_fmt_buf) - return NULL; - - tmp = krealloc(iter->fmt, iter->fmt_size + STATIC_FMT_BUF_SIZE, - GFP_KERNEL); - if (tmp) { - iter->fmt_size += STATIC_FMT_BUF_SIZE; - iter->fmt = tmp; - } - - return tmp; -} - -const char *trace_event_format(struct trace_iterator *iter, const char *fmt) -{ - const char *p, *new_fmt; - char *q; - - if (WARN_ON_ONCE(!fmt)) - return fmt; - - p = fmt; - new_fmt = q = iter->fmt; - while (*p) { - if (unlikely(q - new_fmt + 3 > iter->fmt_size)) { - if (!trace_iter_expand_format(iter)) - return fmt; - - q += iter->fmt - new_fmt; - new_fmt = iter->fmt; - } - - *q++ = *p++; - - /* Replace %p with %px */ - if (p[-1] == '%') { - if (p[0] == '%') { - *q++ = *p++; - } else if (p[0] == 'p' && !isalnum(p[1])) { - *q++ = *p++; - *q++ = 'x'; - } - } - } - *q = '\0'; - - return new_fmt; -} - #define STATIC_TEMP_BUF_SIZE 128 static char static_temp_buf[STATIC_TEMP_BUF_SIZE] __aligned(4); @@ -4425,16 +4369,6 @@ __tracing_open(struct inode *inode, struct file *file, bool snapshot) if (iter->temp) iter->temp_size = 128; - /* - * trace_event_printf() may need to modify given format - * string to replace %p with %px so that it shows real address - * instead of hash value. However, that is only for the event - * tracing, other tracer may not need. Defer the allocation - * until it is needed. - */ - iter->fmt = NULL; - iter->fmt_size = 0; - /* * We make a copy of the current tracer to avoid concurrent * changes on it while we are reading. @@ -4586,7 +4520,6 @@ static int tracing_release(struct inode *inode, struct file *file) mutex_destroy(&iter->mutex); free_cpumask_var(iter->started); - kfree(iter->fmt); kfree(iter->temp); kfree(iter->trace); kfree(iter->buffer_iter); @@ -9480,11 +9413,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) /* Simulate the iterator */ trace_init_global_iter(&iter); - /* Can not use kmalloc for iter.temp and iter.fmt */ + /* Can not use kmalloc for iter.temp */ iter.temp = static_temp_buf; iter.temp_size = STATIC_TEMP_BUF_SIZE; - iter.fmt = static_fmt_buf; - iter.fmt_size = STATIC_FMT_BUF_SIZE; for_each_tracing_cpu(cpu) { atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled); diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 892b3d2f33b7..e5b505b5b7d0 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -758,8 +758,6 @@ struct trace_entry *trace_find_next_entry(struct trace_iterator *iter, void trace_buffer_unlock_commit_nostack(struct trace_buffer *buffer, struct ring_buffer_event *event); -const char *trace_event_format(struct trace_iterator *iter, const char *fmt); - int trace_empty(struct trace_iterator *iter); void *trace_find_next_entry_inc(struct trace_iterator *iter); diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 94b0991717b6..b3ee8d9b6b62 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -312,23 +312,13 @@ int trace_raw_output_prep(struct trace_iterator *iter, } EXPORT_SYMBOL(trace_raw_output_prep); -void trace_event_printf(struct trace_iterator *iter, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - trace_seq_vprintf(&iter->seq, trace_event_format(iter, fmt), ap); - va_end(ap); -} -EXPORT_SYMBOL(trace_event_printf); - static int trace_output_raw(struct trace_iterator *iter, char *name, char *fmt, va_list ap) { struct trace_seq *s = &iter->seq; trace_seq_printf(s, "%s: ", name); - trace_seq_vprintf(s, trace_event_format(iter, fmt), ap); + trace_seq_vprintf(s, fmt, ap); return trace_handle_return(s); }