lkml.org 
[lkml]   [2014]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [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


\
 
 \ /
  Last update: 2014-11-14 20:01    [W:0.151 / U:0.164 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site