{
        if (ops && (ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP) &&
            ops->trampoline) {
+               /*
+                * Record the text poke event before the ksymbol unregister
+                * event.
+                */
+               perf_event_text_poke((void *)ops->trampoline,
+                                    (void *)ops->trampoline,
+                                    ops->trampoline_size, NULL, 0);
                perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_OOL,
                                   ops->trampoline, ops->trampoline_size,
                                   true, FTRACE_TRAMPOLINE_SYM);
                perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_OOL,
                                   ops->trampoline, ops->trampoline_size, false,
                                   FTRACE_TRAMPOLINE_SYM);
+               /*
+                * Record the perf text poke event after the ksymbol register
+                * event.
+                */
+               perf_event_text_poke((void *)ops->trampoline, NULL, 0,
+                                    (void *)ops->trampoline,
+                                    ops->trampoline_size);
        }
 }