Revert "tracing: Show real address for trace event arguments"
This reverts commit 840ce9cfc8
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 <gregkh@google.com>
This commit is contained in:
@@ -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;
|
||||
|
@@ -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); \
|
||||
} \
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user