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)
next prev parent 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).