Messages in this thread Patch in this message | | | Date | Fri, 14 Nov 2014 13:14:29 -0500 | From | Steven Rostedt <> | Subject | Re: [RFC][PATCH 10/23 v4] tracing/uprobes: Do not use return values of trace_seq_printf() |
| |
On Fri, 14 Nov 2014 10:37:33 -0500 Steven Rostedt <rostedt@goodmis.org> wrote:
> On Sat, 15 Nov 2014 00:35:15 +0900 > Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote: > > > > for (i = 0; i < tu->tp.nr_args; i++) { > > > struct probe_arg *parg = &tu->tp.args[i]; > > > > > > - if (!parg->type->print(s, parg->name, data + parg->offset, entry)) > > > - goto partial; > > > + parg->type->print(s, parg->name, data + parg->offset, entry); > > > > In 7/23 you've left loop canceling path, why don't you do same thing here? > > While rebasing this series on my latest code, this patch conflicted. I > notice the difference too (just two minutes ago!). > > I agree, it should break out still. > > Srikar, can I still have your Reviewed-by if I do that? >
Here's the new patch:
-- Steve
From cd883b4c2d5d68ec598d6c6a3b5dce4dd99a4cc1 Mon Sep 17 00:00:00 2001 From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org> Date: Wed, 12 Nov 2014 17:26:57 -0500 Subject: [PATCH] tracing/uprobes: Do not use return values of trace_seq_printf()
The functions trace_seq_printf() and friends will soon no longer have return values. Using trace_seq_has_overflowed() and trace_handle_return() should be used instead.
Link: http://lkml.kernel.org/r/20141114011411.693008134@goodmis.org
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> --- kernel/trace/trace_uprobe.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index e35327c787f7..fd76f8e108ef 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c @@ -852,16 +852,14 @@ print_uprobe_event(struct trace_iterator *iter, int flags, struct trace_event *e tu = container_of(event, struct trace_uprobe, tp.call.event); if (is_ret_probe(tu)) { - if (!trace_seq_printf(s, "%s: (0x%lx <- 0x%lx)", - ftrace_event_name(&tu->tp.call), - entry->vaddr[1], entry->vaddr[0])) - goto partial; + trace_seq_printf(s, "%s: (0x%lx <- 0x%lx)", + ftrace_event_name(&tu->tp.call), + entry->vaddr[1], entry->vaddr[0]); data = DATAOF_TRACE_ENTRY(entry, true); } else { - if (!trace_seq_printf(s, "%s: (0x%lx)", - ftrace_event_name(&tu->tp.call), - entry->vaddr[0])) - goto partial; + trace_seq_printf(s, "%s: (0x%lx)", + ftrace_event_name(&tu->tp.call), + entry->vaddr[0]); data = DATAOF_TRACE_ENTRY(entry, false); } @@ -869,14 +867,13 @@ print_uprobe_event(struct trace_iterator *iter, int flags, struct trace_event *e struct probe_arg *parg = &tu->tp.args[i]; if (!parg->type->print(s, parg->name, data + parg->offset, entry)) - goto partial; + goto out; } - if (trace_seq_putc(s, '\n')) - return TRACE_TYPE_HANDLED; + trace_seq_putc(s, '\n'); -partial: - return TRACE_TYPE_PARTIAL_LINE; + out: + return trace_handle_return(s); } typedef bool (*filter_func_t)(struct uprobe_consumer *self, -- 1.8.1.4
| |