On Tue, Jul 23, 2024 at 5:18 PM cb126yx <cb12...@126.com> wrote:

> Signed-off-by: bevis_chen <bevis_c...@asus.com>
>
> ---
>
>  arm64.c | 27 +++++++++++++++++++++++++++
>
>  1 file changed, 27 insertions(+)
>
>
> diff --git a/arm64.c b/arm64.c
>
> index b3040d7..50dd458 100644
>
> --- a/arm64.c
>
> +++ b/arm64.c
>
> @@ -92,6 +92,7 @@ static void arm64_get_crash_notes(void);
>
>  static void arm64_calc_VA_BITS(void);
>
>  static int arm64_is_uvaddr(ulong, struct task_context *);
>
>  static void arm64_calc_KERNELPACMASK(void);
>
> +static void arm64_recalc_KERNELPACMASK(void);
>
>  static int arm64_get_vmcoreinfo(unsigned long *vaddr, const char *label,
> int base);
>
>
>  struct kernel_range {
>
> @@ -581,6 +582,17 @@ arm64_init(int when)
>
>                 if (!machdep->hz)
>
>                         machdep->hz = 100;
>
>
> +               /*
>
> +               * In the case of using ramdump rather than vmcore,
>
> +               * will fail to parse out KERNELPAC.
>
> +               * So we check if the "sturct ptrauth_keys_kernel" exits
>
> +               * as a basis for whether PAC feature is enabled or not.
>
> +               * If yes, then we use vabits to figure out pac bitmask.
>
> +               */
>
> +               if(!machdep->machspec->CONFIG_ARM64_KERNELPACMASK)
>
> +                       arm64_recalc_KERNELPACMASK();
>
> +
>
> +
>
>                 arm64_irq_stack_init();
>
>                 arm64_overflow_stack_init();
>
>                 arm64_stackframe_init();
>
> @@ -4921,6 +4933,21 @@ static void arm64_calc_KERNELPACMASK(void)
>
>         }
>
>  }
>
>
> +
>
> +#define GENMASK_UL(h, l) \
>
> +    (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
>
> +
>
> +static void arm64_recalc_KERNELPACMASK(void){
>
> +       /* arm64: check if pac already enabled yet from related
> structure.*/
>
> +       if (STRUCT_EXISTS("ptrauth_keys_kernel") &&
> machdep->machspec->VA_BITS_ACTUAL){
>
> +               machdep->machspec->CONFIG_ARM64_KERNELPACMASK =
>
> +                       GENMASK_UL(63, machdep->machspec->VA_BITS_ACTUAL);
>
> +               if (CRASHDEBUG(1))
>
> +                       fprintf(fp, "CONFIG_ARM64_KERNELPACMASK: %lx\n",
>
> +
>  machdep->machspec->CONFIG_ARM64_KERNELPACMASK);
>
> +       }
>
> +}
>
> +
>

Thank you for the update, and the above changes are fine to me.

Let's see if Tao has any comments.

Thanks
Lianbo

 #endif  /* ARM64 */
>
--
Crash-utility mailing list -- devel@lists.crash-utility.osci.io
To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to