All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ARM: return_address: disable again for CONFIG_ARM_UNWIND=y
Date: Wed, 2 Mar 2022 13:43:35 +0100	[thread overview]
Message-ID: <Yh9mdzA9R8jFJxO7@Red> (raw)
In-Reply-To: <20220302113201.1864406-1-ardb@kernel.org>

Le Wed, Mar 02, 2022 at 12:32:01PM +0100, Ard Biesheuvel a écrit :
> Commit 41918ec82eb6 ("ARM: ftrace: enable the graph tracer with the EABI
> unwinder") removed the dummy version of return_address() that was
> provided for the CONFIG_ARM_UNWIND=y case, on the assumption that the
> removal of the kernel_text_address() call from unwind_frame() in the
> preceding patch made it safe to do so.
> 
> However, this turns out not to be the case: Corentin reports warnings
> about suspicious RCU usage and other strange behavior that seems to
> originate in the stack unwinding that occurs in return_address().
> 
> Given that the function graph tracer (which is what these changes were
> enabling for CONFIG_ARM_UNWIND=y builds) does not appear to care about
> this distinction, let's revert return_address() to the old state.
> 
> Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
> Fixes: 41918ec82eb6 ("ARM: ftrace: enable the graph tracer with the EABI unwinder")
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  arch/arm/include/asm/ftrace.h | 18 ++++++++++++++++++
>  arch/arm/kernel/Makefile      |  5 ++++-
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
> index 5358aad67831..7e9251ca29fe 100644
> --- a/arch/arm/include/asm/ftrace.h
> +++ b/arch/arm/include/asm/ftrace.h
> @@ -35,8 +35,26 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)
>  
>  #ifndef __ASSEMBLY__
>  
> +#if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND)
> +/*
> + * return_address uses walk_stackframe to do it's work.  If both
> + * CONFIG_FRAME_POINTER=y and CONFIG_ARM_UNWIND=y walk_stackframe uses unwind
> + * information.  For this to work in the function tracer many functions would
> + * have to be marked with __notrace.  So for now just depend on
> + * !CONFIG_ARM_UNWIND.
> + */
> +
>  void *return_address(unsigned int);
>  
> +#else
> +
> +static inline void *return_address(unsigned int level)
> +{
> +       return NULL;
> +}
> +
> +#endif
> +
>  #define ftrace_return_address(n) return_address(n)
>  
>  #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
> diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
> index 5cebb8d5a1d6..56511856ff9d 100644
> --- a/arch/arm/kernel/Makefile
> +++ b/arch/arm/kernel/Makefile
> @@ -25,7 +25,10 @@ obj-y		:= elf.o entry-common.o irq.o opcodes.o \
>  KASAN_SANITIZE_stacktrace.o := n
>  KASAN_SANITIZE_traps.o := n
>  
> -obj-y				+= return_address.o
> +ifneq ($(CONFIG_ARM_UNWIND),y)
> +obj-$(CONFIG_FRAME_POINTER)	+= return_address.o
> +endif
> +
>  obj-$(CONFIG_ATAGS)		+= atags_parse.o
>  obj-$(CONFIG_ATAGS_PROC)	+= atags_proc.o
>  obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
> -- 
> 2.30.2
> 

This patch remove the RCU warning and the boot is now clean.

Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>

Thanks!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ARM: return_address: disable again for CONFIG_ARM_UNWIND=y
Date: Wed, 2 Mar 2022 13:43:35 +0100	[thread overview]
Message-ID: <Yh9mdzA9R8jFJxO7@Red> (raw)
In-Reply-To: <20220302113201.1864406-1-ardb@kernel.org>

Le Wed, Mar 02, 2022 at 12:32:01PM +0100, Ard Biesheuvel a écrit :
> Commit 41918ec82eb6 ("ARM: ftrace: enable the graph tracer with the EABI
> unwinder") removed the dummy version of return_address() that was
> provided for the CONFIG_ARM_UNWIND=y case, on the assumption that the
> removal of the kernel_text_address() call from unwind_frame() in the
> preceding patch made it safe to do so.
> 
> However, this turns out not to be the case: Corentin reports warnings
> about suspicious RCU usage and other strange behavior that seems to
> originate in the stack unwinding that occurs in return_address().
> 
> Given that the function graph tracer (which is what these changes were
> enabling for CONFIG_ARM_UNWIND=y builds) does not appear to care about
> this distinction, let's revert return_address() to the old state.
> 
> Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
> Fixes: 41918ec82eb6 ("ARM: ftrace: enable the graph tracer with the EABI unwinder")
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  arch/arm/include/asm/ftrace.h | 18 ++++++++++++++++++
>  arch/arm/kernel/Makefile      |  5 ++++-
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
> index 5358aad67831..7e9251ca29fe 100644
> --- a/arch/arm/include/asm/ftrace.h
> +++ b/arch/arm/include/asm/ftrace.h
> @@ -35,8 +35,26 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)
>  
>  #ifndef __ASSEMBLY__
>  
> +#if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND)
> +/*
> + * return_address uses walk_stackframe to do it's work.  If both
> + * CONFIG_FRAME_POINTER=y and CONFIG_ARM_UNWIND=y walk_stackframe uses unwind
> + * information.  For this to work in the function tracer many functions would
> + * have to be marked with __notrace.  So for now just depend on
> + * !CONFIG_ARM_UNWIND.
> + */
> +
>  void *return_address(unsigned int);
>  
> +#else
> +
> +static inline void *return_address(unsigned int level)
> +{
> +       return NULL;
> +}
> +
> +#endif
> +
>  #define ftrace_return_address(n) return_address(n)
>  
>  #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
> diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
> index 5cebb8d5a1d6..56511856ff9d 100644
> --- a/arch/arm/kernel/Makefile
> +++ b/arch/arm/kernel/Makefile
> @@ -25,7 +25,10 @@ obj-y		:= elf.o entry-common.o irq.o opcodes.o \
>  KASAN_SANITIZE_stacktrace.o := n
>  KASAN_SANITIZE_traps.o := n
>  
> -obj-y				+= return_address.o
> +ifneq ($(CONFIG_ARM_UNWIND),y)
> +obj-$(CONFIG_FRAME_POINTER)	+= return_address.o
> +endif
> +
>  obj-$(CONFIG_ATAGS)		+= atags_parse.o
>  obj-$(CONFIG_ATAGS_PROC)	+= atags_proc.o
>  obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
> -- 
> 2.30.2
> 

This patch remove the RCU warning and the boot is now clean.

Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>

Thanks!

  reply	other threads:[~2022-03-02 12:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-02 11:32 [PATCH] ARM: return_address: disable again for CONFIG_ARM_UNWIND=y Ard Biesheuvel
2022-03-02 12:43 ` Corentin Labbe [this message]
2022-03-02 12:43   ` Corentin Labbe
2022-03-05 20:20 ` Corentin Labbe
2022-03-05 22:04   ` Ard Biesheuvel
2022-03-07 10:21     ` Corentin Labbe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yh9mdzA9R8jFJxO7@Red \
    --to=clabbe.montjoie@gmail.com \
    --cc=ardb@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.