tracing: fix trace_find_cmdline()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 18 Mar 2009 07:58:44 +0000 (08:58 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 18 Mar 2009 09:10:17 +0000 (10:10 +0100)
Impact: prevent stale command line output

In case there is no valid command line mapping for a pid
trace_find_cmdline() returns without updating the comm buffer. The
trace dump keeps the previous entry which results in confusing trace
output:

     <idle>-0     [000]   280.702056 ....
     <idle>-23456 [000]   280.702080 ....

Update the comm buffer with "<...>" when no mapping is found.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Steven Rostedt <srostedt@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace.c

index ca673c47568741afe50095eaafe662ca960328c3..06c69a2603280698a00ab5b5d23464af89c52e30 100644 (file)
@@ -787,12 +787,11 @@ void trace_find_cmdline(int pid, char comm[])
 
        __raw_spin_lock(&trace_cmdline_lock);
        map = map_pid_to_cmdline[pid];
-       if (map == NO_CMDLINE_MAP)
-               goto out;
-
-       strcpy(comm, saved_cmdlines[map]);
+       if (map != NO_CMDLINE_MAP)
+               strcpy(comm, saved_cmdlines[map]);
+       else
+               strcpy(comm, "<...>");
 
- out:
        __raw_spin_unlock(&trace_cmdline_lock);
 }