powerpc: Rename STACK_FRAME_MARKER and derive it from frame offset
authorNicholas Piggin <npiggin@gmail.com>
Sun, 27 Nov 2022 12:49:34 +0000 (22:49 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 2 Dec 2022 06:54:08 +0000 (17:54 +1100)
This is a count of longs from the stack pointer to the regs marker.
Rename it to make it more distinct from the other byte offsets. It
can be derived from the byte offset definitions just added.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221127124942.1665522-10-npiggin@gmail.com
arch/powerpc/include/asm/ptrace.h
arch/powerpc/kernel/process.c
arch/powerpc/kernel/stacktrace.c
arch/powerpc/perf/callchain.c
arch/powerpc/xmon/xmon.c

index 8a9f4cf8c4c585d9f8dcc1cbe413b80fce18b68d..fdd50648df56e694f369706d930852ed6953e632 100644 (file)
@@ -126,7 +126,6 @@ struct pt_regs
                                 STACK_FRAME_OVERHEAD + KERNEL_REDZONE_SIZE)
 #define STACK_INT_FRAME_REGS   STACK_FRAME_OVERHEAD
 #define STACK_INT_FRAME_MARKER (STACK_FRAME_OVERHEAD - 16)
-#define STACK_FRAME_MARKER     12
 
 #ifdef CONFIG_PPC64_ELF_ABI_V2
 #define STACK_FRAME_MIN_SIZE   32
@@ -147,7 +146,6 @@ struct pt_regs
 #define STACK_INT_FRAME_SIZE   (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD)
 #define STACK_INT_FRAME_REGS   STACK_FRAME_OVERHEAD
 #define STACK_INT_FRAME_MARKER (STACK_FRAME_OVERHEAD - 8)
-#define STACK_FRAME_MARKER     2
 #define STACK_FRAME_MIN_SIZE   STACK_FRAME_OVERHEAD
 
 /* Size of stack frame allocated when calling signal handler. */
@@ -155,6 +153,8 @@ struct pt_regs
 
 #endif /* __powerpc64__ */
 
+#define STACK_INT_FRAME_MARKER_LONGS   (STACK_INT_FRAME_MARKER/sizeof(long))
+
 #ifndef __ASSEMBLY__
 #include <asm/paca.h>
 
index d7a581997d926f0343032924056c51ebfa844295..6c0a3c664266c1735a2260ec0021d8bc28130101 100644 (file)
@@ -2263,7 +2263,7 @@ void __no_sanitize_address show_stack(struct task_struct *tsk,
                 * We look for the "regs" marker in the current frame.
                 */
                if (validate_sp(sp, tsk, STACK_FRAME_WITH_PT_REGS)
-                   && stack[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) {
+                   && stack[STACK_INT_FRAME_MARKER_LONGS] == STACK_FRAME_REGS_MARKER) {
                        struct pt_regs *regs = (struct pt_regs *)
                                (sp + STACK_INT_FRAME_REGS);
 
index a2443d61728ebc708423297aa877d2b456d02cec..7efa0ec9dd774c1be3d7c7193ab85ebcfb3fa860 100644 (file)
@@ -136,7 +136,7 @@ int __no_sanitize_address arch_stack_walk_reliable(stack_trace_consume_fn consum
 
                /* Mark stacktraces with exception frames as unreliable. */
                if (sp <= stack_end - STACK_INT_FRAME_SIZE &&
-                   stack[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) {
+                   stack[STACK_INT_FRAME_MARKER_LONGS] == STACK_FRAME_REGS_MARKER) {
                        return -EINVAL;
                }
 
index 9e254aed1f61a2883f08bb9d0606a04ae52327f3..b01497ed51738673ea3aef82305fa9e45b95011a 100644 (file)
@@ -62,7 +62,7 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
 
                if (next_sp == sp + STACK_INT_FRAME_SIZE &&
                    validate_sp(sp, current, STACK_INT_FRAME_SIZE) &&
-                   fp[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) {
+                   fp[STACK_INT_FRAME_MARKER_LONGS] == STACK_FRAME_REGS_MARKER) {
                        /*
                         * This looks like an interrupt frame for an
                         * interrupt that occurred in the kernel
index a14eb4d815c2feb826b2379d039e2ba1ff20dba2..0da66bc4823d4d5fc501427c1f73fd21353ccf9c 100644 (file)
@@ -1721,7 +1721,6 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
 }
 
 #define LRSAVE_OFFSET          (STACK_FRAME_LR_SAVE * sizeof(unsigned long))
-#define MARKER_OFFSET          (STACK_FRAME_MARKER * sizeof(unsigned long))
 
 static void xmon_show_stack(unsigned long sp, unsigned long lr,
                            unsigned long pc)
@@ -1784,7 +1783,7 @@ static void xmon_show_stack(unsigned long sp, unsigned long lr,
 
                /* Look for "regs" marker to see if this is
                   an exception frame. */
-               if (mread(sp + MARKER_OFFSET, &marker, sizeof(unsigned long))
+               if (mread(sp + STACK_INT_FRAME_MARKER, &marker, sizeof(unsigned long))
                    && marker == STACK_FRAME_REGS_MARKER) {
                        if (mread(sp + STACK_INT_FRAME_REGS, &regs, sizeof(regs)) != sizeof(regs)) {
                                printf("Couldn't read registers at %lx\n",