All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tracing: recordmcount.pl: Fix $mcount_regex for MIPS.
@ 2010-07-09 21:52 David Daney
  2010-07-10  0:26 ` Steven Rostedt
  2010-07-23 12:11 ` [tip:perf/core] tracing: Fix $mcount_regex for MIPS in recordmcount.pl tip-bot for David Daney
  0 siblings, 2 replies; 5+ messages in thread
From: David Daney @ 2010-07-09 21:52 UTC (permalink / raw)
  To: rostedt
  Cc: linux-kernel, linux-mips, David Daney, Li Hong, Ingo Molnar,
	Matt Fleming, Ralf Baechle

I found this issue in a locally patched 2.6.32.x, current kernels have
moved the offending code to an __init function which is skipped by
recordmcount.pl, so the bug is not currently being exercised.
However, I think the patch is still a good idea, to avoid future
problems if _mcount were to ever have its address taken in normal
code.

This is what I originally saw:

    Although arch/mips/kernel/ftrace.c is built without -pg, and thus
    contains no calls to _mcount, it does use the address of _mcount
    in ftrace_make_nop().  This was causing relocations to be emitted
    for _mcount which recordmcount.pl erronously took to be _mcount
    call sites.  The result was that the text of ftrace_make_nop()
    would be patched with garbage leading to a system crash.

In non-module code, all _mcount call sites will have R_MIPS_26
relocations, so we restrict $mcount_regex to only match on these.

Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Li Hong <lihong.hi@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Matt Fleming <matt@console-pimps.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
---
 scripts/recordmcount.pl |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
index f3c9c0a..0171060 100755
--- a/scripts/recordmcount.pl
+++ b/scripts/recordmcount.pl
@@ -326,7 +326,7 @@ if ($arch eq "x86_64") {
     #                    14: R_MIPS_NONE *ABS*
     #	 18:   00020021        nop
     if ($is_module eq "0") {
-	    $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$";
+	    $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_26\\s+_mcount\$";
     } else {
 	    $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_HI16\\s+_mcount\$";
     }
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-07-23 12:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-09 21:52 [PATCH] tracing: recordmcount.pl: Fix $mcount_regex for MIPS David Daney
2010-07-10  0:26 ` Steven Rostedt
2010-07-10  2:12   ` Ralf Baechle
2010-07-10  3:32   ` Wu Zhangjin
2010-07-23 12:11 ` [tip:perf/core] tracing: Fix $mcount_regex for MIPS in recordmcount.pl tip-bot for David Daney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.