I have been misled by comments in asm-generic/ptrace.h into thinking
that frame_pointer() is universally available across architectures,
which resulted in a wrong design decision.

Add a comment about frame_pointer in a hope that it will help others
to avoid this mistake in the future.

Cc: Oleg Nesterov <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: [email protected]
Signed-off-by: Dmitry V. Levin <[email protected]>
---
 include/asm-generic/ptrace.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/asm-generic/ptrace.h b/include/asm-generic/ptrace.h
index 82e674f6b337..3186c30bd50d 100644
--- a/include/asm-generic/ptrace.h
+++ b/include/asm-generic/ptrace.h
@@ -59,6 +59,10 @@ static inline void user_stack_pointer_set(struct pt_regs 
*regs,
 #define SET_FP(regs, val) (GET_FP(regs) = (val))
 #endif
 
+/*
+ * Unlike instruction_pointer and user_stack_pointer,
+ * frame_pointer is not universally available across architectures.
+ */
 static inline unsigned long frame_pointer(struct pt_regs *regs)
 {
        return GET_FP(regs);
-- 
ldv

Reply via email to