Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752192AbbDPEnb (ORCPT ); Thu, 16 Apr 2015 00:43:31 -0400 Received: from lgeamrelo02.lge.com ([156.147.1.126]:44659 "EHLO lgeamrelo02.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750820AbbDPEnW (ORCPT ); Thu, 16 Apr 2015 00:43:22 -0400 X-Original-SENDERIP: 10.177.220.157 X-Original-MAILFROM: iamjoonsoo.kim@lge.com From: Joonsoo Kim To: Steven Rostedt Cc: Ingo Molnar , linux-kernel@vger.kernel.org, Joonsoo Kim Subject: [PATCH] tracing: fix incorrect enabling of trace events by boot cmdline Date: Thu, 16 Apr 2015 13:44:44 +0900 Message-Id: <1429159484-22977-1-git-send-email-iamjoonsoo.kim@lge.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1798 Lines: 53 There is a problem that trace events are not properly enabled with boot cmdline. Problem is that if we pass "trace_event=kmem:mm_page_alloc" to boot cmdline, it enables all kmem trace events. It is caused by parsing mechanism. When we parse cmdline, buffer contents is modified due to tokenization. And, if we use this buffer again, we will get wrong result. Unfortunately, this buffer should be accessed three times to set trace events properly in boot time. So, we need to handle this situation. There is already handling code for ",", but, we need another for ":". This patch add it. Signed-off-by: Joonsoo Kim --- kernel/trace/trace_events.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index db54dda..ce5b194 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -565,6 +565,7 @@ static int __ftrace_set_clr_event(struct trace_array *tr, const char *match, static int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set) { char *event = NULL, *sub = NULL, *match; + int ret; /* * The buf format can be : @@ -590,7 +591,11 @@ static int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set) event = NULL; } - return __ftrace_set_clr_event(tr, match, sub, event, set); + ret = __ftrace_set_clr_event(tr, match, sub, event, set); + + /* Put back the colon to allow this to be called again */ + if (buf) + *(buf - 1) = ':'; } /** -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/