arm64: stacktrace: Move start_backtrace() out of the header
authorMark Brown <broonie@kernel.org>
Fri, 19 Mar 2021 17:40:22 +0000 (17:40 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Sun, 28 Mar 2021 17:09:47 +0000 (18:09 +0100)
Currently start_backtrace() is a static inline function in the header.
Since it really shouldn't be sufficiently performance critical that we
actually need to have it inlined move it into a C file, this will save
anyone else scratching their head about why it is defined in the header.
As far as I can see it's only there because it was factored out of the
various callers.

Signed-off-by: Mark Brown <broonie@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20210319174022.33051-1-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/stacktrace.h
arch/arm64/kernel/stacktrace.c

index eb29b1f..4b33ca6 100644 (file)
@@ -148,27 +148,7 @@ static inline bool on_accessible_stack(const struct task_struct *tsk,
        return false;
 }
 
-static inline void start_backtrace(struct stackframe *frame,
-                                  unsigned long fp, unsigned long pc)
-{
-       frame->fp = fp;
-       frame->pc = pc;
-#ifdef CONFIG_FUNCTION_GRAPH_TRACER
-       frame->graph = 0;
-#endif
-
-       /*
-        * Prime the first unwind.
-        *
-        * In unwind_frame() we'll check that the FP points to a valid stack,
-        * which can't be STACK_TYPE_UNKNOWN, and the first unwind will be
-        * treated as a transition to whichever stack that happens to be. The
-        * prev_fp value won't be used, but we set it to 0 such that it is
-        * definitely not an accessible stack address.
-        */
-       bitmap_zero(frame->stacks_done, __NR_STACK_TYPES);
-       frame->prev_fp = 0;
-       frame->prev_type = STACK_TYPE_UNKNOWN;
-}
+void start_backtrace(struct stackframe *frame, unsigned long fp,
+                    unsigned long pc);
 
 #endif /* __ASM_STACKTRACE_H */
index ad20981..2a1a7a2 100644 (file)
  *     add     sp, sp, #0x10
  */
 
+
+void start_backtrace(struct stackframe *frame, unsigned long fp,
+                    unsigned long pc)
+{
+       frame->fp = fp;
+       frame->pc = pc;
+#ifdef CONFIG_FUNCTION_GRAPH_TRACER
+       frame->graph = 0;
+#endif
+
+       /*
+        * Prime the first unwind.
+        *
+        * In unwind_frame() we'll check that the FP points to a valid stack,
+        * which can't be STACK_TYPE_UNKNOWN, and the first unwind will be
+        * treated as a transition to whichever stack that happens to be. The
+        * prev_fp value won't be used, but we set it to 0 such that it is
+        * definitely not an accessible stack address.
+        */
+       bitmap_zero(frame->stacks_done, __NR_STACK_TYPES);
+       frame->prev_fp = 0;
+       frame->prev_type = STACK_TYPE_UNKNOWN;
+}
+
 /*
  * Unwind from one frame record (A) to the next frame record (B).
  *