eu> Date: Tue, 4 Nov 2025 07:15:30 +0100 Precedence: bulk X-Mailing-List: linux-s390@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [patch V5 04/12] powerpc/uaccess: Use unsafe wrappers for ASM GOTO To: Thomas Gleixner , LKML Cc: Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , linuxppc-dev@lists.ozlabs.org, kernel test robot , Russell King , linux-arm-kernel@lists.infradead.org, Linus Torvalds , x86@kernel.org, Paul Walmsley , Palmer Dabbelt , linux-riscv@lists.infradead.org, Heiko Carstens , Christian Borntraeger , Sven Schnelle , linux-s390@vger.kernel.org, Mathieu Desnoyers , Andrew Cooper , David Laight , Julia Lawall , Nicolas Palix , Peter Zijlstra , Darren Hart , Davidlohr Bueso , =?UTF-8?Q?Andr=C3=A9_Almeida?= , Alexander Viro , Christian Brauner , Jan Kara , linux-fsdevel@vger.kernel.org References: <20251027083700.573016505@linutronix.de> <20251027083745.356628509@linutronix.de> From: Christophe Leroy Content-Language: fr-FR In-Reply-To: <20251027083745.356628509@linutronix.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [147.75.80.249 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 5 Le 27/10/2025 à 09:43, Thomas Gleixner a écrit : > ASM GOTO is miscompiled by GCC when it is used inside a auto cleanup scope: > > bool foo(u32 __user *p, u32 val) > { > scoped_guard(pagefault) > unsafe_put_user(val, p, efault); > return true; > efault: > return false; > } > > It ends up leaking the pagefault disable counter in the fault path. clang > at least fails the build. Confirmed on powerpc: Before the patch 000001e8 : 1e8: 81 22 05 24 lwz r9,1316(r2) 1ec: 39 29 00 01 addi r9,r9,1 1f0: 91 22 05 24 stw r9,1316(r2) 1f4: 90 83 00 00 stw r4,0(r3) 1f8: 81 22 05 24 lwz r9,1316(r2) 1fc: 38 60 00 01 li r3,1 200: 39 29 ff ff addi r9,r9,-1 204: 91 22 05 24 stw r9,1316(r2) 208: 4e 80 00 20 blr 20c: 38 60 00 00 li r3,0 210: 4e 80 00 20 blr 00000000 <__ex_table>: ... 20: R_PPC_REL32 .text+0x1f4 24: R_PPC_REL32 .text+0x20c After the patch 000001e8 : 1e8: 81 22 05 24 lwz r9,1316(r2) 1ec: 39 29 00 01 addi r9,r9,1 1f0: 91 22 05 24 stw r9,1316(r2) 1f4: 90 83 00 00 stw r4,0(r3) 1f8: 81 22 05 24 lwz r9,1316(r2) 1fc: 38 60 00 01 li r3,1 200: 39 29 ff ff addi r9,r9,-1 204: 91 22 05 24 stw r9,1316(r2) 208: 4e 80 00 20 blr 20c: 81 22 05 24 lwz r9,1316(r2) 210: 38 60 00 00 li r3,0 214: 39 29 ff ff addi r9,r9,-1 218: 91 22 05 24 stw r9,1316(r2) 21c: 4e 80 00 20 blr 00000000 <__ex_table>: ... 20: R_PPC_REL32 .text+0x1f4 24: R_PPC_REL32 .text+0x20c > > Rename unsafe_*_user() to arch_unsafe_*_user() which makes the generic > uaccess header wrap it with a local label that makes both compilers emit > correct code. Same for the kernel_nofault() variants. > > Signed-off-by: Thomas Gleixner > Cc: Madhavan Srinivasan > Cc: Michael Ellerman > Cc: Nicholas Piggin > Cc: Christophe Leroy > Cc: linuxppc-dev@lists.ozlabs.org Reviewed-by: Christophe Leroy > --- > arch/powerpc/include/asm/uaccess.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > --- a/arch/powerpc/include/asm/uaccess.h > +++ b/arch/powerpc/include/asm/uaccess.h > @@ -451,7 +451,7 @@ user_write_access_begin(const void __use > #define user_write_access_begin user_write_access_begin > #define user_write_access_end prevent_current_write_to_user > > -#define unsafe_get_user(x, p, e) do { \ > +#define arch_unsafe_get_user(x, p, e) do { \ > __long_type(*(p)) __gu_val; \ > __typeof__(*(p)) __user *__gu_addr = (p); \ > \ > @@ -459,7 +459,7 @@ user_write_access_begin(const void __use > (x) = (__typeof__(*(p)))__gu_val; \ > } while (0) > > -#define unsafe_put_user(x, p, e) \ > +#define arch_unsafe_put_user(x, p, e) \ > __put_user_size_goto((__typeof__(*(p)))(x), (p), sizeof(*(p)), e) > > #define unsafe_copy_from_user(d, s, l, e) \ > @@ -504,11 +504,11 @@ do { \ > unsafe_put_user(*(u8*)(_src + _i), (u8 __user *)(_dst + _i), e); \ > } while (0) > > -#define __get_kernel_nofault(dst, src, type, err_label) \ > +#define arch_get_kernel_nofault(dst, src, type, err_label) \ > __get_user_size_goto(*((type *)(dst)), \ > (__force type __user *)(src), sizeof(type), err_label) > > -#define __put_kernel_nofault(dst, src, type, err_label) \ > +#define arch_put_kernel_nofault(dst, src, type, err_label) \ > __put_user_size_goto(*((type *)(src)), \ > (__force type __user *)(dst), sizeof(type), err_label) > > From - Tue Nov 04 06:52:24 2025 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id wDh/GaKiCWmLLR8AYBR5ng (envelope-from ) for ; Tue, 04 Nov 2025 06:52:18 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Tue, 04 Nov 2025 06:52:18 +0000 Received: from sv.mirrors.kernel.org ([139.178.88.99]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vGAtu-00000009EcL-0Rva for hi@josie.lol; Tue, 04 Nov 2025 06:52:18 +0000 Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 47502420E31 for ; Tue, 4 Nov 2025 06:52:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 07D602DA755; Tue, 4 Nov 2025import { Paginator } from "@smithy/types"; import { GetCommentsForComparedCommitCommandInput, GetCommentsForComparedCommitCommandOutput, } from "../commands/GetCommentsForComparedCommitCommand"; import { CodeCommitPaginationConfiguration } from "./Interfaces"; export declare const paginateGetCommentsForComparedCommit: ( config: CodeCommitPaginationConfiguration, input: GetCommentsForComparedCommitCommandInput, ...rest: any[] ) => Paginator;