Re: [PATCH 17/18] tracing: Add indirect to indirect access for function based events

From: Steven Rostedt
Date: Fri Feb 09 2018 - 12:18:50 EST


On Fri, 9 Feb 2018 10:47:58 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> Good catch!
>
> It should have been:
>
> return process_redirects(arg, val, buf);

Although I need to add this :-p

diff --git a/kernel/trace/trace_event_ftrace.c b/kernel/trace/trace_event_ftrace.c
index 673336e352be..2690d4e46322 100644
--- a/kernel/trace/trace_event_ftrace.c
+++ b/kernel/trace/trace_event_ftrace.c
@@ -562,7 +564,7 @@ process_event(struct func_event *fevent, const char *token, enum func_states sta
ret = add_arg_redirect(fevent->last_arg, val, 0);
if (ret)
break;
- return FUNC_STATE_VAR;
+ return FUNC_STATE_BRACKET_END;

case FUNC_STATE_REDIRECT_BRACKET:
if (WARN_ON(!fevent->last_arg))
@@ -656,6 +658,7 @@ static unsigned long process_redirects(struct func_arg *arg, unsigned long val,
ret = probe_kernel_read(buf, (void *)val, sizeof(long));
if (ret)
return 0;
+ val = *(unsigned long *)buf;
}
}
return val;

Because it wasn't parsing properly, and then not getting the redirect.

-- Steve