[PATCH 4/8] arm64: stacktrace: add stackinfo_on_stack() helper
Kalesh Singh
kaleshsingh at google.com
Mon Aug 1 22:00:27 PDT 2022
On Mon, Aug 1, 2022 at 5:12 AM Mark Rutland <mark.rutland at arm.com> wrote:
>
> Factor the core predicate out of on_stack() into a helper which can be
> used on a pre-populated stack_info.
>
> There should be no functional change as a result of this patch.
>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Fuad Tabba <tabba at google.com>
> Cc: Kalesh Singh <kaleshsingh at google.com>
> Cc: Madhavan T. Venkataraman <madvenka at linux.microsoft.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Mark Brown <broonie at kernel.org>
Reviewed-by: Kalesh Singh <kaleshsingh at google.com>
> ---
> arch/arm64/include/asm/stacktrace/common.h | 29 ++++++++++++++++------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/include/asm/stacktrace/common.h b/arch/arm64/include/asm/stacktrace/common.h
> index 676002d7d333c..9ed7feb493a36 100644
> --- a/arch/arm64/include/asm/stacktrace/common.h
> +++ b/arch/arm64/include/asm/stacktrace/common.h
> @@ -66,21 +66,34 @@ struct unwind_state {
> struct task_struct *task;
> };
>
> +static inline bool stackinfo_on_stack(const struct stack_info *info,
> + unsigned long sp, unsigned long size)
> +{
> + if (!info->low)
> + return false;
> +
> + if (sp < info->low || sp + size < sp || sp + size > info->high)
> + return false;
> +
> + return true;
> +}
> +
> 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)
> {
> - if (!low)
> - return false;
> + struct stack_info tmp = {
> + .low = low,
> + .high = high,
> + .type = type,
> + };
>
> - if (sp < low || sp + size < sp || sp + size > high)
> + if (!stackinfo_on_stack(&tmp, sp, size))
> return false;
>
> - if (info) {
> - info->low = low;
> - info->high = high;
> - info->type = type;
> - }
> + if (info)
> + *info = tmp;
> +
> return true;
> }
>
> --
> 2.30.2
>
More information about the linux-arm-kernel
mailing list