From: Nathan Chancellor <nathan@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"kernel test robot" <lkp@intel.com>,
"Russell King" <linux@armlinux.org.uk>,
linux-arm-kernel@lists.infradead.org,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Darren Hart" <dvhart@infradead.org>,
"Davidlohr Bueso" <dave@stgolabs.net>,
"André Almeida" <andrealmeid@igalia.com>,
x86@kernel.org, "Alexander Viro" <viro@zeniv.linux.org.uk>,
"Christian Brauner" <brauner@kernel.org>,
"Jan Kara" <jack@suse.cz>,
linux-fsdevel@vger.kernel.org
Subject: Re: [patch V2 2/6] kbuild: Disable asm goto on clang < 17
Date: Tue, 16 Sep 2025 11:44:40 -0700 [thread overview]
Message-ID: <20250916184440.GA1245207@ax162> (raw)
In-Reply-To: <20250916163252.100835216@linutronix.de>
Hi Thomas,
First of all, sorry you got bit by this issue.
On Tue, Sep 16, 2025 at 06:33:11PM +0200, Thomas Gleixner wrote:
> clang < 17 fails to use scope local labels with asm goto:
>
> {
> __label__ local_lbl;
> ...
> unsafe_get_user(uval, uaddr, local_lbl);
> ...
> return 0;
> local_lbl:
> return -EFAULT;
> }
>
> when two such scopes exist in the same function:
>
> error: cannot jump from this asm goto statement to one of its possible targets
For the record, this is not specific to local labels, unique function
labels could trigger this error as well, as demonstrated by Nick's test
case:
https://github.com/ClangBuiltLinux/linux/issues/1886#issuecomment-1636342477
> That prevents using local labels for a cleanup based user access mechanism.
Indeed. This has only popped up a couple of times in the past couple of
years and each time it has been easy enough to work around by shuffling
the use of asm goto but as cleanup gets used in more places, this is
likely to cause problems.
> As there is no way to provide a simple test case for the 'depends on' test
> in Kconfig, mark ASM goto broken on clang versions < 17 to get this road
> block out of the way.
That being said, the commit title and message always references asm goto
in the general sense but this change only affects asm goto with outputs.
Is it sufficient to resolve the issues you were seeing? As far as I
understand it, the general issue can affect asm goto with or without
outputs but I assume x86 won't have any issues because the label is not
used in __get_user_asm when asm goto with outputs is not supported?
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Nathan Chancellor <nathan@kernel.org>
> ---
> V2: New patch
> ---
> init/Kconfig | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -96,9 +96,14 @@ config GCC_ASM_GOTO_OUTPUT_BROKEN
> default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400
> default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300
>
> +config CLANG_ASM_GOTO_OUTPUT_BROKEN
> + bool
> + depends on CC_IS_CLANG
> + default y if CLANG_VERSION < 170000
Assuming this change sticks, please consider including links to the
original bug report and the fix in LLVM:
https://github.com/ClangBuiltLinux/linux/issues/1886
https://github.com/llvm/llvm-project/commit/f023f5cdb2e6c19026f04a15b5a935c041835d14
> +
> config CC_HAS_ASM_GOTO_OUTPUT
> def_bool y
> - depends on !GCC_ASM_GOTO_OUTPUT_BROKEN
> + depends on !GCC_ASM_GOTO_OUTPUT_BROKEN && !CLANG_ASM_GOTO_OUTPUT_BROKEN
> depends on $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null)
>
> config CC_HAS_ASM_GOTO_TIED_OUTPUT
>
next prev parent reply other threads:[~2025-09-16 18:44 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-16 16:33 [patch V2 0/6] uaccess: Provide and use scopes for user masked access Thomas Gleixner
2025-09-16 16:33 ` [patch V2 1/6] ARM: uaccess: Implement missing __get_user_asm_dword() Thomas Gleixner
2025-09-16 21:26 ` Russell King (Oracle)
2025-09-17 5:48 ` Thomas Gleixner
2025-09-17 9:41 ` Russell King (Oracle)
2025-09-17 12:35 ` Christophe Leroy
2025-09-17 13:55 ` Thomas Gleixner
2025-09-17 15:17 ` Russell King (Oracle)
2025-09-17 17:14 ` Nathan Chancellor
2025-09-17 17:34 ` Russell King (Oracle)
2025-09-17 19:25 ` Thomas Gleixner
2025-09-17 18:44 ` Thomas Gleixner
2025-09-19 18:27 ` [patch V2a " Thomas Gleixner
2025-09-16 16:33 ` [patch V2 2/6] kbuild: Disable asm goto on clang < 17 Thomas Gleixner
2025-09-16 18:44 ` Nathan Chancellor [this message]
2025-09-16 20:43 ` Thomas Gleixner
2025-09-16 20:56 ` [patch V2a 2/6] kbuild: Disable CC_HAS_ASM_GOTO_OUTPUT on clang < version 17 Thomas Gleixner
2025-09-16 21:50 ` Nathan Chancellor
2025-09-24 7:36 ` [tip: core/urgent] kbuild: Disable CC_HAS_ASM_GOTO_OUTPUT on clang < 17 tip-bot2 for Thomas Gleixner
2025-09-29 9:38 ` [patch V2a 2/6] kbuild: Disable CC_HAS_ASM_GOTO_OUTPUT on clang < version 17 Geert Uytterhoeven
2025-09-29 10:08 ` Peter Zijlstra
2025-09-29 10:58 ` Geert Uytterhoeven
2025-09-29 11:04 ` Peter Zijlstra
2025-09-29 11:10 ` Geert Uytterhoeven
2025-09-29 15:53 ` Linus Torvalds
2025-10-02 18:47 ` David Laight
2025-09-29 22:05 ` Thomas Gleixner
2025-09-16 16:33 ` [patch V2 3/6] uaccess: Provide scoped masked user access regions Thomas Gleixner
2025-09-18 13:20 ` Mathieu Desnoyers
2025-09-19 9:10 ` Thomas Gleixner
2025-09-16 16:33 ` [patch V2 4/6] futex: Convert to scoped masked user access Thomas Gleixner
2025-09-16 16:33 ` [patch V2 5/6] x86/futex: " Thomas Gleixner
2025-09-16 16:33 ` [patch V2 6/6] select: " Thomas Gleixner
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=20250916184440.GA1245207@ax162 \
--to=nathan@kernel.org \
--cc=andrealmeid@igalia.com \
--cc=brauner@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=dave@stgolabs.net \
--cc=dvhart@infradead.org \
--cc=jack@suse.cz \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lkp@intel.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=x86@kernel.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