arm64: stacktrace: Factor out on_accessible_stack_common()

Move common on_accessible_stack checks to stacktrace/common.h. This is
used in the implementation of the nVHE hypervisor unwinder later in
this series.

Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Reviewed-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Tested-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220726073750.3219117-3-kaleshsingh@google.com
This commit is contained in:
Kalesh Singh 2022-07-26 00:37:35 -07:00 committed by Marc Zyngier
parent 6bf212c89c
commit 15a59f19a0
2 changed files with 20 additions and 4 deletions

View File

@ -65,8 +65,8 @@ static inline bool on_accessible_stack(const struct task_struct *tsk,
unsigned long sp, unsigned long size,
struct stack_info *info)
{
if (info)
info->type = STACK_TYPE_UNKNOWN;
if (on_accessible_stack_common(tsk, sp, size, info))
return true;
if (on_task_stack(tsk, sp, size, info))
return true;
@ -74,8 +74,6 @@ static inline bool on_accessible_stack(const struct task_struct *tsk,
return false;
if (on_irq_stack(sp, size, info))
return true;
if (on_overflow_stack(sp, size, info))
return true;
if (on_sdei_stack(sp, size, info))
return true;

View File

@ -62,6 +62,9 @@ struct unwind_state {
struct task_struct *task;
};
static inline bool on_overflow_stack(unsigned long sp, unsigned long size,
struct stack_info *info);
static inline bool on_stack(unsigned long sp, unsigned long size,
unsigned long low, unsigned long high,
enum stack_type type, struct stack_info *info)
@ -80,6 +83,21 @@ static inline bool on_stack(unsigned long sp, unsigned long size,
return true;
}
static inline bool on_accessible_stack_common(const struct task_struct *tsk,
unsigned long sp,
unsigned long size,
struct stack_info *info)
{
if (info)
info->type = STACK_TYPE_UNKNOWN;
/*
* Both the kernel and nvhe hypervisor make use of
* an overflow_stack
*/
return on_overflow_stack(sp, size, info);
}
static inline void unwind_init_common(struct unwind_state *state,
struct task_struct *task)
{