From patchwork Wed Nov 6 16:14:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 13865172 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A2B4D59F53 for ; Wed, 6 Nov 2024 16:15:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 959C66B009E; Wed, 6 Nov 2024 11:15:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 90A146B009F; Wed, 6 Nov 2024 11:15:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F8BF6B00A0; Wed, 6 Nov 2024 11:15:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 619E16B009E for ; Wed, 6 Nov 2024 11:15:09 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B82CFAB097 for ; Wed, 6 Nov 2024 16:15:08 +0000 (UTC) X-FDA: 82756168446.26.7CADD92 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf07.hostedemail.com (Postfix) with ESMTP id 938C340021 for ; Wed, 6 Nov 2024 16:14:18 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Rg69Z4SE; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of masahiroy@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=masahiroy@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730909647; a=rsa-sha256; cv=none; b=itT/RnLchnPL0VirIH0vN0+PD2bGXfRAeS0tbxD2I/PiFmskA15zE8H5ArxmuTUNFENvaq oL8kli4g/Kua8+bvusShId1lpM7DojDu3v6Ie/CmFXizxHUA6vduH+u80pvEykyYLb4AME 2C54AVrjApIgQozf2N1C8GxEy50Ord4= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Rg69Z4SE; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of masahiroy@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=masahiroy@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730909647; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xcjYSMpuL3LO4iBHX61MEnp9jY5ooPxGfhO51Un4a78=; b=sXk75t/VHNvVKzOYGKKndnG4tTQ1FnBIbIx8x2uOTrxQ2C/DhOY3Ryy3JOI8Sc21nIpq6m HvOA/xo65oS0Um4oPdoguG4ZYN4n6SUAgByxF7p5shplmavrbNwHtoQegrK12PX0y0dO+K 7ukakm8C5RQYhxa3XJqaFpGTSB78SkQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 46A255C009C; Wed, 6 Nov 2024 16:14:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C388C4CECC; Wed, 6 Nov 2024 16:15:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1730909705; bh=L1fz5ifwL7RtYFeEDpd0ry1pl5RXPpuE7qAe8htztHs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rg69Z4SEgjr14uUSm8raG4/pBqR96KcGJKeZyT1jCty/ybLeUUY9kVlJ9WxpuGvY2 JVRAz0Ve5o8Nq/tPBv1cQl0geGUfCQuoUOrwYQBrrNuZb0yIgNnSKolkr54p0mp8U+ 8Mmk58lGjlXIssQ9vVRy2gYIkG7r+951nC1RDlfMVEwKE46+OyDmI+qoghj4KnyykC zTcOfB2jVEA1HfGxTCRhm04xEmDuh9sRBn+M0XWXlOGjF2L8iBNtGtUmNqjwO8cEd3 QW5s5t+fzIbVXEELqgNo2T/VLiwWgZAOeO2smOMhC90WaFISTshS7lhTEl5JJ6KPW0 imFjIcT+ySYeA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Nicholas Piggin , Masahiro Yamada , Andi Kleen , Andrew Morton , Arnd Bergmann , Bill Wendling , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Justin Stitt , Kees Cook , Nathan Chancellor , Nick Desaulniers , Paolo Abeni , Sami Tolvanen , Simon Horman , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, llvm@lists.linux.dev, netdev@vger.kernel.org Subject: [PATCH 2/2] Rename .data.once to .data..once to fix resetting WARN*_ONCE Date: Thu, 7 Nov 2024 01:14:41 +0900 Message-ID: <20241106161445.189399-2-masahiroy@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241106161445.189399-1-masahiroy@kernel.org> References: <20241106161445.189399-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 938C340021 X-Rspamd-Server: rspam11 X-Stat-Signature: uom4aebp5hifiorkofaorxncurpxcf5q X-HE-Tag: 1730909658-7649 X-HE-Meta: U2FsdGVkX18KUJcCC1qFzVg/xVZqe3M9Y4ICmb7yIa6RUfhMvVdGKYf8PpVwP0vEjegvjkdZlIl5JphXgE5reMX565CobZmz9EppGIpESags/+QbL9FCrCkIu8ZBgEbwYpAUct9XOm1OdtyHTTnOf996wWZXGT2eu09/VxActopqPbGu7BT22oWh+Ygv+SuaPQk/871OkLkOyhhDBzmz9+MEOXhZVB3uzk2TGQotMC6XxCD3F7Cj7F4GxSxg42TmUbar4PvaKbd4V/B/pZHPwaYwKDJcO12PUWNhY+OZkEPd8vMCZRA36J3fVDLeDXC2A9Ujv7XNkA2YWqNjhxdjA/YzNG8Bd9Myn2wBbGvhQcWr9nZTgagI4BcnVljpvgrOTLPasLSbEDXux5Jb5qRSTdfvZTWqfOI7AWUAxGZ4Wx9buaWJYdNhpfla/pWVobygWLWBxtZg5wiSe7/KovMv1gLRInhNBm426o6DDSyfJf5H5kz5qJcFHa5yYRP88lFy3xeKoyn4TaSGmRSWIC9LZ5RykXGua00ngdFck20OeqbJ7qQd5aoAniSWBAGt+8p6MIo4Kt7k4jtZxkGQhTacYxl5vD0U2Tdsw2xZdjJPTH5xmdL+3Z5xVc1gCAcjN5/qp+6cRAgQOzkqr57E5HG4+ivv3NNylZi+yBx8oCgjM9oPIZfj98e2VKX+zLeiTvqAzaHU6n3BteF9FcjjTunXtsHC20qjfcSK6tHLpOIgzk1tMa4T9NX/VzF1TDFmxrjYJfTIzgWGPwZE1nkrRcmejisWilXPPcBsMSfDEYgIvMMOtFKmo5W9Nl3TTNRNHo7E1/G3YoNdfXcESlXKqrNVpQW1JtnLGk21ptbCPAf0FktL7nMpz2Sk/eMLrZGnCx5A7aWHw/24B58gULeFazqGCw130aZ36zaiId9HvSHpIGSuHirSbV3jlX/2ErsOZyMv9d0kiiRu/iemdgOskPt uCEQZGsV +vtPq9nxdA8Jd0T+q/rsl0+b+G0Y6t5xmhnJqqEYem7uwDHazMyWaeiEf6yhLpyO6UR695rLJkA7QNESyrqKh3Qtdx6xBCPwyIrbPvIIfmoA3ol5l1ZzPqJrAm/bBhSuF+wKUWaWMbH2rSCbjvk/tPx3YISNNW1CDVC2q2uBbSqdYzux7HJYYl8G0pg34D5D95gjYylT+V3yoF0QUtATCMz9RNf13v0U6vPu5crKZnPuvPEqXsafeQ7lNLPfyv+tMR7lRbI4gOOdOrTBY4mzbpRhAjIqFKWTIyqKbdXJwx5ar493LFXuUQzXdAg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Commit b1fca27d384e ("kernel debug: support resetting WARN*_ONCE") added support for clearing the state of once warnings. However, it is not functional when CONFIG_LD_DEAD_CODE_DATA_ELIMINATION or CONFIG_LTO_CLANG is enabled, because .data.unlikely matches the .data.[0-9a-zA-Z_]* pattern in the DATA_MAIN macro. Commit cb87481ee89d ("kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured") was introduced to suppress the issue for the default CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=n case, providing a minimal fix for stable backporting. We were aware this did not address the issue for CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y. The plan was to apply correct fixes and then revert cb87481ee89d. [1] Seven years have passed since then, yet the #ifdef workaround remains in place. Meanwhile, commit b1fca27d384e introduced the .data.once section, and commit dc5723b02e52 ("kbuild: add support for Clang LTO") extended the #ifdef. Using a ".." separator in the section name fixes the issue for CONFIG_LD_DEAD_CODE_DATA_ELIMINATION and CONFIG_LTO_CLANG. [1]: https://lore.kernel.org/linux-kbuild/CAK7LNASck6BfdLnESxXUeECYL26yUDm0cwRZuM4gmaWUkxjL5g@mail.gmail.com/ Fixes: b1fca27d384e ("kernel debug: support resetting WARN*_ONCE") Fixes: dc5723b02e52 ("kbuild: add support for Clang LTO") Signed-off-by: Masahiro Yamada --- include/asm-generic/vmlinux.lds.h | 2 +- include/linux/mmdebug.h | 6 +++--- include/linux/once.h | 4 ++-- include/linux/once_lite.h | 2 +- include/net/net_debug.h | 2 +- mm/internal.h | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 3c9dc1fd094d..54504013c749 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -359,7 +359,7 @@ defined(CONFIG_AUTOFDO_CLANG) || defined(CONFIG_PROPELLER_CLANG) *(.data..shared_aligned) /* percpu related */ \ *(.data..unlikely) \ __start_once = .; \ - *(.data.once) \ + *(.data..once) \ __end_once = .; \ STRUCT_ALIGN(); \ *(__tracepoints) \ diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h index 39a7714605a7..d7cb1e5ecbda 100644 --- a/include/linux/mmdebug.h +++ b/include/linux/mmdebug.h @@ -46,7 +46,7 @@ void vma_iter_dump_tree(const struct vma_iterator *vmi); } \ } while (0) #define VM_WARN_ON_ONCE_PAGE(cond, page) ({ \ - static bool __section(".data.once") __warned; \ + static bool __section(".data..once") __warned; \ int __ret_warn_once = !!(cond); \ \ if (unlikely(__ret_warn_once && !__warned)) { \ @@ -66,7 +66,7 @@ void vma_iter_dump_tree(const struct vma_iterator *vmi); unlikely(__ret_warn); \ }) #define VM_WARN_ON_ONCE_FOLIO(cond, folio) ({ \ - static bool __section(".data.once") __warned; \ + static bool __section(".data..once") __warned; \ int __ret_warn_once = !!(cond); \ \ if (unlikely(__ret_warn_once && !__warned)) { \ @@ -77,7 +77,7 @@ void vma_iter_dump_tree(const struct vma_iterator *vmi); unlikely(__ret_warn_once); \ }) #define VM_WARN_ON_ONCE_MM(cond, mm) ({ \ - static bool __section(".data.once") __warned; \ + static bool __section(".data..once") __warned; \ int __ret_warn_once = !!(cond); \ \ if (unlikely(__ret_warn_once && !__warned)) { \ diff --git a/include/linux/once.h b/include/linux/once.h index bc714d414448..30346fcdc799 100644 --- a/include/linux/once.h +++ b/include/linux/once.h @@ -46,7 +46,7 @@ void __do_once_sleepable_done(bool *done, struct static_key_true *once_key, #define DO_ONCE(func, ...) \ ({ \ bool ___ret = false; \ - static bool __section(".data.once") ___done = false; \ + static bool __section(".data..once") ___done = false; \ static DEFINE_STATIC_KEY_TRUE(___once_key); \ if (static_branch_unlikely(&___once_key)) { \ unsigned long ___flags; \ @@ -64,7 +64,7 @@ void __do_once_sleepable_done(bool *done, struct static_key_true *once_key, #define DO_ONCE_SLEEPABLE(func, ...) \ ({ \ bool ___ret = false; \ - static bool __section(".data.once") ___done = false; \ + static bool __section(".data..once") ___done = false; \ static DEFINE_STATIC_KEY_TRUE(___once_key); \ if (static_branch_unlikely(&___once_key)) { \ ___ret = __do_once_sleepable_start(&___done); \ diff --git a/include/linux/once_lite.h b/include/linux/once_lite.h index b7bce4983638..27de7bc32a06 100644 --- a/include/linux/once_lite.h +++ b/include/linux/once_lite.h @@ -12,7 +12,7 @@ #define __ONCE_LITE_IF(condition) \ ({ \ - static bool __section(".data.once") __already_done; \ + static bool __section(".data..once") __already_done; \ bool __ret_cond = !!(condition); \ bool __ret_once = false; \ \ diff --git a/include/net/net_debug.h b/include/net/net_debug.h index 1e74684cbbdb..4a79204c8d30 100644 --- a/include/net/net_debug.h +++ b/include/net/net_debug.h @@ -27,7 +27,7 @@ void netdev_info(const struct net_device *dev, const char *format, ...); #define netdev_level_once(level, dev, fmt, ...) \ do { \ - static bool __section(".data.once") __print_once; \ + static bool __section(".data..once") __print_once; \ \ if (!__print_once) { \ __print_once = true; \ diff --git a/mm/internal.h b/mm/internal.h index 93083bbeeefa..a23f7b11b760 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -48,7 +48,7 @@ struct folio_batch; * when we specify __GFP_NOWARN. */ #define WARN_ON_ONCE_GFP(cond, gfp) ({ \ - static bool __section(".data.once") __warned; \ + static bool __section(".data..once") __warned; \ int __ret_warn_once = !!(cond); \ \ if (unlikely(!(gfp & __GFP_NOWARN) && __ret_warn_once && !__warned)) { \