lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 23 Feb 2022 22:58:00 -0800
From:   Max Filippov <jcmvbkbc@...il.com>
To:     Kees Cook <keescook@...omium.org>
Cc:     Chris Zankel <chris@...kel.net>, Marc Zyngier <maz@...nel.org>,
        "open list:TENSILICA XTENSA PORT (xtensa)" 
        <linux-xtensa@...ux-xtensa.org>,
        LKML <linux-kernel@...r.kernel.org>,
        linux-hardening@...r.kernel.org
Subject: Re: [PATCH] xtensa: Implement "current_stack_pointer"

On Wed, Feb 23, 2022 at 10:43 PM Kees Cook <keescook@...omium.org> wrote:
>
> On Wed, Feb 23, 2022 at 10:22:59PM -0800, Max Filippov wrote:
> > On Wed, Feb 23, 2022 at 10:05 PM Kees Cook <keescook@...omium.org> wrote:
> > >
> > > To follow the existing per-arch conventions replace open-coded uses
> > > of asm "sp" as "current_stack_pointer". This will let it be used in
> > > non-arch places (like HARDENED_USERCOPY).
> > >
> > > Cc: Chris Zankel <chris@...kel.net>
> > > Cc: Max Filippov <jcmvbkbc@...il.com>
> > > Cc: Marc Zyngier <maz@...nel.org>
> > > Cc: linux-xtensa@...ux-xtensa.org
> > > Signed-off-by: Kees Cook <keescook@...omium.org>
> > > ---
> > >  arch/xtensa/Kconfig                  | 1 +
> > >  arch/xtensa/include/asm/current.h    | 2 ++
> > >  arch/xtensa/include/asm/stacktrace.h | 2 +-
> > >  arch/xtensa/kernel/irq.c             | 3 +--
> > >  4 files changed, 5 insertions(+), 3 deletions(-)
> >
> > Acked-by: Max Filippov <jcmvbkbc@...il.com>
>
> Thanks! And apologies, my cross-compiler tricked me into thinking this
> patch compiled without problems. It did, however. I've change the patch
> slightly to deal with the needed casts:
>
> diff --git a/arch/xtensa/include/asm/stacktrace.h b/arch/xtensa/include/asm/stacktrace.h
> index fe06e8ed162b..a85e785a6288 100644
> --- a/arch/xtensa/include/asm/stacktrace.h
> +++ b/arch/xtensa/include/asm/stacktrace.h
> @@ -19,14 +19,14 @@ struct stackframe {
>
>  static __always_inline unsigned long *stack_pointer(struct task_struct *task)
>  {
> -       unsigned long *sp;
> +       unsigned long sp;
>
>         if (!task || task == current)
> -               __asm__ __volatile__ ("mov %0, a1\n" : "=a"(sp));
> +               sp = current_stack_pointer;
>         else
> -               sp = (unsigned long *)task->thread.sp;
> +               sp = task->thread.sp;
>
> -       return sp;
> +       return (unsigned long *)sp;
>  }
>
>  void walk_stackframe(unsigned long *sp,
>
> Shall I send a v2, or just carry this fix in my tree?

This additional change looks good to me, if you could
fold it into the original patch that'd be perfect. But separate
patch would also work.

-- 
Thanks.
-- Max

Powered by blists - more mailing lists