public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: linux-arm-kernel@lists.infradead.org
Cc: broonie@kernel.org, catalin.marinas@arm.com, james.morse@arm.com,
	kaleshsingh@google.com, madvenka@linux.microsoft.com,
	mark.rutland@arm.com, maz@kernel.org, tabba@google.com,
	will@kernel.org
Subject: [PATCH v2 2/8] arm64: stacktrace: rename unwind_next_common() -> unwind_next_frame_record()
Date: Fri,  5 Aug 2022 13:45:16 +0100	[thread overview]
Message-ID: <20220805124522.706457-3-mark.rutland@arm.com> (raw)
In-Reply-To: <20220805124522.706457-1-mark.rutland@arm.com>

The unwind_next_common() function unwinds a single frame record. There
are other unwind steps (e.g. unwinding through trampolines) which are
handled in the regular kernel unwinder, and in future there may be other
common unwind helpers.

Clarify the purpose of unwind_next_common() by renaming it to
unwind_next_frame_record(). At the same time, add commentary, and delete
the redundant comment at the top of asm/stacktrace/common.h.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Kalesh Singh <kaleshsingh@google.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Cc: Fuad Tabba <tabba@google.com>
Cc: Kalesh Singh <kaleshsingh@google.com>
Cc: Madhavan T. Venkataraman <madvenka@linux.microsoft.com>
Cc: Marc Zyngier <maz@kernel.org>
---
 arch/arm64/include/asm/stacktrace/common.h | 22 ++++++++++++----------
 arch/arm64/kernel/stacktrace.c             |  2 +-
 arch/arm64/kvm/hyp/nvhe/stacktrace.c       |  2 +-
 arch/arm64/kvm/stacktrace.c                |  4 ++--
 4 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/arch/arm64/include/asm/stacktrace/common.h b/arch/arm64/include/asm/stacktrace/common.h
index 01dc9f44a24a7..676002d7d333c 100644
--- a/arch/arm64/include/asm/stacktrace/common.h
+++ b/arch/arm64/include/asm/stacktrace/common.h
@@ -2,13 +2,6 @@
 /*
  * Common arm64 stack unwinder code.
  *
- * To implement a new arm64 stack unwinder:
- *     1) Include this header
- *
- *     2) Call into unwind_next_common() from your top level unwind
- *        function, passing it the validation and translation callbacks
- *        (though the later can be NULL if no translation is required).
- *
  * See: arch/arm64/kernel/stacktrace.c for the reference implementation.
  *
  * Copyright (C) 2012 ARM Ltd.
@@ -139,9 +132,18 @@ typedef bool (*on_accessible_stack_fn)(const struct task_struct *tsk,
 				       unsigned long sp, unsigned long size,
 				       struct stack_info *info);
 
-static inline int unwind_next_common(struct unwind_state *state,
-				     on_accessible_stack_fn accessible,
-				     stack_trace_translate_fp_fn translate_fp)
+/*
+ * unwind_next_frame_record() - Unwind to the next frame record indicated by
+ * @state->fp.
+ *
+ * @state:        the current unwind state.
+ * @accessible:   determines whether the frame record is accessible
+ * @translate_fp: translates the fp prior to access (may be NULL)
+ */
+static inline int
+unwind_next_frame_record(struct unwind_state *state,
+			 on_accessible_stack_fn accessible,
+			 stack_trace_translate_fp_fn translate_fp)
 {
 	struct stack_info info;
 	unsigned long fp = state->fp, kern_fp = fp;
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
index 056fb045d0e0c..4c8865e495fea 100644
--- a/arch/arm64/kernel/stacktrace.c
+++ b/arch/arm64/kernel/stacktrace.c
@@ -109,7 +109,7 @@ static int notrace unwind_next(struct unwind_state *state)
 	if (fp == (unsigned long)task_pt_regs(tsk)->stackframe)
 		return -ENOENT;
 
-	err = unwind_next_common(state, on_accessible_stack, NULL);
+	err = unwind_next_frame_record(state, on_accessible_stack, NULL);
 	if (err)
 		return err;
 
diff --git a/arch/arm64/kvm/hyp/nvhe/stacktrace.c b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
index 50a1fa6b5c044..579b46aa9a553 100644
--- a/arch/arm64/kvm/hyp/nvhe/stacktrace.c
+++ b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
@@ -71,7 +71,7 @@ static bool on_accessible_stack(const struct task_struct *tsk,
 
 static int unwind_next(struct unwind_state *state)
 {
-	return unwind_next_common(state, on_accessible_stack, NULL);
+	return unwind_next_frame_record(state, on_accessible_stack, NULL);
 }
 
 static void notrace unwind(struct unwind_state *state,
diff --git a/arch/arm64/kvm/stacktrace.c b/arch/arm64/kvm/stacktrace.c
index b9cf551d9d31d..b69c18a26567d 100644
--- a/arch/arm64/kvm/stacktrace.c
+++ b/arch/arm64/kvm/stacktrace.c
@@ -97,8 +97,8 @@ static bool on_accessible_stack(const struct task_struct *tsk,
 
 static int unwind_next(struct unwind_state *state)
 {
-	return unwind_next_common(state, on_accessible_stack,
-				  kvm_nvhe_stack_kern_va);
+	return unwind_next_frame_record(state, on_accessible_stack,
+					kvm_nvhe_stack_kern_va);
 }
 
 static void unwind(struct unwind_state *state,
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-08-05 12:47 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-05 12:45 [PATCH v2 0/8] arm64: stacktrace: cleanups and improvements Mark Rutland
2022-08-05 12:45 ` [PATCH v2 1/8] arm64: stacktrace: simplify unwind_next_common() Mark Rutland
2022-08-05 12:45 ` Mark Rutland [this message]
2022-08-08 11:38   ` [PATCH v2 2/8] arm64: stacktrace: rename unwind_next_common() -> unwind_next_frame_record() Will Deacon
2022-08-08 11:46     ` Mark Rutland
2022-08-05 12:45 ` [PATCH v2 3/8] arm64: stacktrace: move SDEI stack helpers to stacktrace code Mark Rutland
2022-08-05 12:45 ` [PATCH v2 4/8] arm64: stacktrace: add stackinfo_on_stack() helper Mark Rutland
2022-08-05 12:45 ` [PATCH v2 5/8] arm64: stacktrace: rework stack boundary discovery Mark Rutland
2022-08-05 12:45 ` [PATCH v2 6/8] arm64: stacktrace: remove stack type from fp translator Mark Rutland
2022-08-08 11:55   ` Will Deacon
2022-08-08 12:08     ` Mark Rutland
2022-08-08 12:30       ` Mark Rutland
2022-08-08 11:56   ` Mark Brown
2022-08-05 12:45 ` [PATCH v2 7/8] arm64: stacktrace: track all stack boundaries explicitly Mark Rutland
2022-08-08 12:04   ` Mark Brown
2022-08-05 12:45 ` [PATCH v2 8/8] arm64: stacktrace: track hyp stacks in unwinder's address space Mark Rutland
2022-08-08 12:09   ` Mark Brown
2022-08-06  1:11 ` [PATCH v2 0/8] arm64: stacktrace: cleanups and improvements Madhavan T. Venkataraman
2022-08-08 11:59 ` Will Deacon
2022-08-08 12:11   ` Mark Rutland
2022-08-08 12:28     ` Will Deacon
2022-08-08 12:33       ` Mark Rutland
2022-08-08 12:38     ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220805124522.706457-3-mark.rutland@arm.com \
    --to=mark.rutland@arm.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=kaleshsingh@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=madvenka@linux.microsoft.com \
    --cc=maz@kernel.org \
    --cc=tabba@google.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox