linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Heiko Carstens <hca@linux.ibm.com>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-arch@vger.kernel.org, Vasily Gorbik <gor@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	linux-s390@vger.kernel.org
Subject: [PATCH 16/15] bugs/s390: Use in 'cond_str' to __EMIT_BUG()
Date: Mon, 9 Jun 2025 10:27:44 +0200	[thread overview]
Message-ID: <aEabAPB5Y9EbSPkt@gmail.com> (raw)
In-Reply-To: <20250520133927.7932C19-hca@linux.ibm.com>


* Heiko Carstens <hca@linux.ibm.com> wrote:

> On Thu, May 15, 2025 at 02:46:39PM +0200, Ingo Molnar wrote:
> > Pass in the condition string from __WARN_FLAGS(), but do not
> > concatenate it with __FILE__, because the __bug_table is
> > apparently indexed by 16 bits and increasing string size
> > overflows it on defconfig builds.
> 
> Could you provide your change which didn't work?
> 
> I cannot see how anything would overflow. Trying the below on top of
> your series seems to work like expected.
> 
> In order to keep things easy this drops the mergeable section trick
> and results in a small increase of the rodata section, but I doubt
> that would explain what you have seen.
> 
> Also allyesconfig builds without errors.
> 
> diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
> index 30f8785a01f5..837bfbde0c51 100644
> --- a/arch/s390/include/asm/bug.h
> +++ b/arch/s390/include/asm/bug.h
> @@ -11,16 +11,14 @@
>  #define __EMIT_BUG(cond_str, x) do {				\
>  	asm_inline volatile(					\
>  		"0:	mc	0,0\n"				\
> -		".section .rodata.str,\"aMS\",@progbits,1\n"	\
> -		"1:	.asciz	\""__FILE__"\"\n"		\
> -		".previous\n"					\
>  		".section __bug_table,\"aw\"\n"			\
> -		"2:	.long	0b-.\n"				\
> -		"	.long	1b-.\n"				\
> -		"	.short	%0,%1\n"			\
> -		"	.org	2b+%2\n"			\
> +		"1:	.long	0b-.\n"				\
> +		"	.long	%0-.\n"				\
> +		"	.short	%1,%2\n"			\
> +		"	.org	1b+%3\n"			\
>  		".previous\n"					\
> -		: : "i" (__LINE__),				\
> +		: : "i" (WARN_CONDITION_STR(cond_str) __FILE__),\
> +		    "i" (__LINE__),				\
>  		    "i" (x),					\
>  		    "i" (sizeof(struct bug_entry)));		\
>  } while (0)

So I'm not sure what happened: I tried to reproduce what I did 
originally, but my naive patch ran into assembler build errors when a 
WARN_ON() macro tried to use the '%' C operator, such as 
fs/crypto/crypto.c:123:

 include/linux/compiler_types.h:497:20: error: invalid 'asm': invalid %-code
 arch/s390/include/asm/bug.h:12:2: note: in expansion of macro 'asm_inline'
 arch/s390/include/asm/bug.h:50:2: note: in expansion of macro '__EMIT_BUG'
 include/asm-generic/bug.h:119:3: note: in expansion of macro '__WARN_FLAGS'
 fs/crypto/crypto.c:123:6: note: in expansion of macro 'WARN_ON_ONCE'

Which corresponds to:

        if (WARN_ON_ONCE(len % FSCRYPT_CONTENTS_ALIGNMENT != 0))
                return -EINVAL;

I'm quite sure I never saw these build errors - I saw linker errors 
related to the u16 overflow I documented in the changelog. (Note to 
self: copy & paste more of the build error context next time around.)

Your version doesn't have that build problem, so I picked it up with 
the changelog below and your Signed-off-by. Does that look good to you?

Thanks,

	Ingo

===================================>
From 7128294ca8b997efb1d85c7405c8c6e9af1a170d Mon Sep 17 00:00:00 2001
From: Heiko Carstens <hca@linux.ibm.com>
Date: Tue, 20 May 2025 15:39:27 +0200
Subject: [PATCH] bugs/s390: Use 'cond_str' in __EMIT_BUG()

In order to keep things easy this drops the mergeable section trick
and results in a small increase of the rodata section.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-arch@vger.kernel.org
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: linux-s390@vger.kernel.org
Link: https://lore.kernel.org/r/20250520133927.7932C19-hca@linux.ibm.com
---
 arch/s390/include/asm/bug.h | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index 30f8785a01f5..837bfbde0c51 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -11,16 +11,14 @@
 #define __EMIT_BUG(cond_str, x) do {				\
 	asm_inline volatile(					\
 		"0:	mc	0,0\n"				\
-		".section .rodata.str,\"aMS\",@progbits,1\n"	\
-		"1:	.asciz	\""__FILE__"\"\n"		\
-		".previous\n"					\
 		".section __bug_table,\"aw\"\n"			\
-		"2:	.long	0b-.\n"				\
-		"	.long	1b-.\n"				\
-		"	.short	%0,%1\n"			\
-		"	.org	2b+%2\n"			\
+		"1:	.long	0b-.\n"				\
+		"	.long	%0-.\n"				\
+		"	.short	%1,%2\n"			\
+		"	.org	1b+%3\n"			\
 		".previous\n"					\
-		: : "i" (__LINE__),				\
+		: : "i" (WARN_CONDITION_STR(cond_str) __FILE__),\
+		    "i" (__LINE__),				\
 		    "i" (x),					\
 		    "i" (sizeof(struct bug_entry)));		\
 } while (0)

  reply	other threads:[~2025-06-09  8:27 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-15 12:46 [PATCH 00/15] Implement CONFIG_DEBUG_BUGVERBOSE_DETAILED=y, to improve WARN_ON_ONCE() output by adding the condition string Ingo Molnar
2025-05-15 12:46 ` [PATCH 01/15] bugs/core: Extend __WARN_FLAGS() with the 'cond_str' parameter Ingo Molnar
2025-05-15 12:46 ` [PATCH 02/15] bugs/core: Pass down the condition string of WARN_ON_ONCE(cond) warnings to __WARN_FLAGS() Ingo Molnar
2025-05-15 12:46 ` [PATCH 03/15] bugs/core: Introduce the CONFIG_DEBUG_BUGVERBOSE_DETAILED Kconfig switch Ingo Molnar
2025-05-15 12:46 ` [PATCH 04/15] bugs/x86: Extend _BUG_FLAGS() with the 'cond_str' parameter Ingo Molnar
2025-05-15 12:46 ` [PATCH 05/15] bugs/x86: Augment warnings output by concatenating 'cond_str' with the regular __FILE__ string in _BUG_FLAGS() Ingo Molnar
2025-05-15 12:46 ` [PATCH 06/15] bugs/powerpc: Pass in 'cond_str' to BUG_ENTRY() Ingo Molnar
2025-05-15 12:46 ` [PATCH 07/15] bugs/powerpc: Concatenate 'cond_str' with '__FILE__' in BUG_ENTRY(), to extend WARN_ON/BUG_ON output Ingo Molnar
2025-05-15 12:46 ` [PATCH 08/15] bugs/LoongArch: Pass in 'cond_str' to __BUG_ENTRY() Ingo Molnar
2025-05-15 12:46 ` [PATCH 09/15] bugs/LoongArch: Concatenate 'cond_str' with '__FILE__' in __BUG_ENTRY(), to extend WARN_ON/BUG_ON output Ingo Molnar
2025-05-15 12:46 ` [PATCH 10/15] bugs/s390: Pass in 'cond_str' to __EMIT_BUG() Ingo Molnar
2025-05-20 13:39   ` Heiko Carstens
2025-06-09  8:27     ` Ingo Molnar [this message]
2025-06-09 15:56       ` [PATCH 16/15] bugs/s390: Use " Heiko Carstens
2025-05-15 12:46 ` [PATCH 11/15] bugs/riscv: Pass in 'cond_str' to __BUG_FLAGS() Ingo Molnar
2025-05-15 12:46 ` [PATCH 12/15] bugs/riscv: Concatenate 'cond_str' with '__FILE__' in __BUG_FLAGS(), to extend WARN_ON/BUG_ON output Ingo Molnar
2025-05-16 15:09   ` Alexandre Ghiti
2025-05-16 15:45     ` Ingo Molnar
2025-05-15 12:46 ` [PATCH 13/15] bugs/parisc: Concatenate 'cond_str' with '__FILE__' in __WARN_FLAGS(), " Ingo Molnar
2025-05-15 15:28   ` Helge Deller
2025-05-15 15:31     ` Ingo Molnar
2025-05-15 12:46 ` [PATCH 14/15] bugs/sh: " Ingo Molnar
2025-05-15 12:56   ` John Paul Adrian Glaubitz
2025-05-15 13:33     ` Ingo Molnar
2025-05-15 13:35       ` John Paul Adrian Glaubitz
2025-05-15 13:43         ` Ingo Molnar
2025-05-15 12:46 ` [PATCH 15/15] bugs/core: Reorganize fields in the first line of WARNING output, add ->comm[] output Ingo Molnar
2025-05-22 20:39 ` [PATCH 00/15] Implement CONFIG_DEBUG_BUGVERBOSE_DETAILED=y, to improve WARN_ON_ONCE() output by adding the condition string David Laight
2025-06-09  7:52   ` Ingo Molnar
2025-06-09 11:13 ` Peter Zijlstra

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=aEabAPB5Y9EbSPkt@gmail.com \
    --to=mingo@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=svens@linux.ibm.com \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).