Commit 15a59f19 authored by Kalesh Singh's avatar Kalesh Singh Committed by Marc Zyngier

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: default avatarKalesh Singh <kaleshsingh@google.com>
Reviewed-by: default avatarFuad Tabba <tabba@google.com>
Reviewed-by: default avatarMark Brown <broonie@kernel.org>
Tested-by: default avatarFuad Tabba <tabba@google.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220726073750.3219117-3-kaleshsingh@google.com
parent 6bf212c8
......@@ -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;
......
......@@ -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)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment