do {                                                                   \
        static const char *trace_printk_fmt                             \
        __attribute__((section("__trace_printk_fmt")));                 \
-       trace_printk_fmt = fmt;                                 \
+                                                                       \
+       if (!trace_printk_fmt)                                          \
+               trace_printk_fmt = fmt;                                 \
+                                                                       \
        __trace_printk_check_format(fmt, ##args);                       \
        __trace_printk(_THIS_IP_, trace_printk_fmt, ##args);            \
 } while (0)
 do {                                                                   \
        static const char *trace_printk_fmt                             \
        __attribute__((section("__trace_printk_fmt")));                 \
-       trace_printk_fmt = fmt;                                 \
+                                                                       \
+       if (!trace_printk_fmt)                                          \
+               trace_printk_fmt = fmt;                                 \
+                                                                       \
        __ftrace_vprintk(_THIS_IP_, trace_printk_fmt, vargs);           \
 } while (0)