tracing: Fix trace_seq_bitmask() to start at current position
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Thu, 13 Nov 2014 02:11:59 +0000 (21:11 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 19 Nov 2014 20:25:38 +0000 (15:25 -0500)
In trace_seq_bitmask() it calls bitmap_scnprintf() not from the current
position of the trace_seq buffer (s->buffer + s->len), but instead from
the beginning of the buffer (s->buffer).

Luckily, the only user of this "ipi_raise tracepoint" uses it as the
first parameter, and as such, the start of the temp buffer in
include/trace/ftrace.h (see __get_bitmask()).

Reported-by: Petr Mladek <pmladek@suse.cz>
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace_seq.c

index 1f24ed99dca240f22de5673ca1ca1e64617886a6..b100994a17fe9984e618ad9a8b0ab337d789335a 100644 (file)
@@ -122,7 +122,7 @@ int trace_seq_bitmask(struct trace_seq *s, const unsigned long *maskp,
        if (s->full || !len)
                return 0;
 
-       ret = bitmap_scnprintf(s->buffer, len, maskp, nmaskbits);
+       ret = bitmap_scnprintf(s->buffer + s->len, len, maskp, nmaskbits);
        s->len += ret;
 
        return 1;