Re: [PATCH] s390/irqflags: add out-of-line definitions of arch_local_irq_*() for KMSAN

Heiko Carstens <[email protected]>
Newsgroups org.kernel.vger.linux-s390,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Thu, Aug 06, 2026 at 12:00:19PM +0200, Ilya Leoshkevich wrote:
> Inline KMSAN arch_local_irq_*() definitions run afoul of
> -Wstatic-in-inline. Move them out-of-line. Decompressor is not
> instrumented, so make sure it keeps using inline definitions.
> Make sure non-GPL modules see the out-of-line definitions.
> 
> Cc: Boqun Feng <[email protected]>
> Reported-by: kernel test robot <[email protected]>
> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Suggested-by: Heiko Carstens <[email protected]>
> Fixes: 1b301f5f28ba ("s390/irqflags: do not instrument arch_local_irq_*() with KMSAN")
> Signed-off-by: Ilya Leoshkevich <[email protected]>
> ---
>  arch/s390/include/asm/irqflags.h | 20 +++++++++++++-------
>  arch/s390/kernel/Makefile        |  1 +
>  arch/s390/kernel/irqflags.c      | 27 +++++++++++++++++++++++++++
>  3 files changed, 41 insertions(+), 7 deletions(-)
>  create mode 100644 arch/s390/kernel/irqflags.c

Don't we have the very same problem in arch/s390/include/asm/uaccess.h
with uaccess_kmsan_or_inline too?

> -#ifdef CONFIG_KMSAN
> -#define arch_local_irq_attributes noinline notrace __no_sanitize_memory __maybe_unused
> +#if defined(CONFIG_KMSAN) && !defined(__DECOMPRESSOR)
> +extern unsigned long arch_local_save_flags(void);
> +extern unsigned long arch_local_irq_save(void);
> +extern void arch_local_irq_enable_external(void);
> +extern void arch_local_irq_enable(void);

FWIW, we go without "extern" for function prototypes.

>  #else
> -#define arch_local_irq_attributes __always_inline
> +#define arch_local_save_flags __arch_local_save_flags
> +#define arch_local_irq_save __arch_local_irq_save
> +#define arch_local_irq_enable_external __arch_local_irq_enable_external
> +#define arch_local_irq_enable __arch_local_irq_enable
>  #endif

For the sake of readability: could you adjust all of them with tabs?
Like e.g.:

#define arch_local_save_flags		__arch_local_save_flags
#define arch_local_irq_save		__arch_local_irq_save
#define arch_local_irq_enable_external	__arch_local_irq_enable_external
#define arch_local_irq_enable		__arch_local_irq_enable

And just to annoy you: the patch subject needs to be adjusted to:

s390/irqflags: add out-of-line definitions of arch_local_irq_*() for KMSAN
               ^

In the meantime we require always an upper case letter following the
component.

> +++ b/arch/s390/kernel/irqflags.c
> @@ -0,0 +1,27 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include <asm/irqflags.h>
> +#include <linux/export.h>

Please add an empty line before the first include, and also change the order
of includes - "linux" should always come before "asm".
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.