]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
tracing: trace_printk() fix, move format array to data section
authorIngo Molnar <mingo@elte.hu>
Mon, 9 Mar 2009 09:09:06 +0000 (10:09 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 9 Mar 2009 09:11:08 +0000 (10:11 +0100)
Impact: fix kernel crash when using trace_printk()

trace_printk_fmt section is defined into the readonly section.
But we do:

trace_printk_fmt = fmt;

to fill in that table of format strings - which is not read-only.
Under CONFIG_DEBUG_RODATA=y this crashes ...

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <1236356510-8381-5-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/asm-generic/vmlinux.lds.h

index 48ade3168b137839f7cead761c31968b328b9b99..d656b462402431f0b7e4d94a5270883812a40f61 100644 (file)
@@ -98,6 +98,7 @@
        VMLINUX_SYMBOL(__stop___tracepoints) = .;                       \
        LIKELY_PROFILE()                                                \
        BRANCH_PROFILE()                                                \
        VMLINUX_SYMBOL(__stop___tracepoints) = .;                       \
        LIKELY_PROFILE()                                                \
        BRANCH_PROFILE()                                                \
+       TRACE_PRINTKS()                                                 \
        FTRACE_EVENTS()
 
 #define RO_DATA(align)                                                 \
        FTRACE_EVENTS()
 
 #define RO_DATA(align)                                                 \
                *(__vermagic)           /* Kernel version magic */      \
                *(__markers_strings)    /* Markers: strings */          \
                *(__tracepoints_strings)/* Tracepoints: strings */      \
                *(__vermagic)           /* Kernel version magic */      \
                *(__markers_strings)    /* Markers: strings */          \
                *(__tracepoints_strings)/* Tracepoints: strings */      \
-               TRACE_PRINTKS()                                 \
        }                                                               \
                                                                        \
        .rodata1          : AT(ADDR(.rodata1) - LOAD_OFFSET) {          \
        }                                                               \
                                                                        \
        .rodata1          : AT(ADDR(.rodata1) - LOAD_OFFSET) {          \