From mboxrd@z Thu Jan 1 00:00:00 1970 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 58F3AC83F34 for ; Thu, 17 Jul 2025 23:25:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C9A5C6B00BA; Thu, 17 Jul 2025 19:25:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C72296B00BB; Thu, 17 Jul 2025 19:25:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B88876B00BC; Thu, 17 Jul 2025 19:25:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A728A6B00BA for ; Thu, 17 Jul 2025 19:25:24 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 7A9251A025D for ; Thu, 17 Jul 2025 23:25:24 +0000 (UTC) X-FDA: 83675340168.27.B264329 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf21.hostedemail.com (Postfix) with ESMTP id 869641C000E for ; Thu, 17 Jul 2025 23:25:22 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TRbkjAx4; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf21.hostedemail.com: domain of kees@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=kees@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752794722; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mGiAm0MDZ/znPl6KJ69cPmxAT1IBWppn+gQWkQ9EK4U=; b=MInjDWlorGGEr0omoE4j2M0jOZAI/HqdlESu666iLJfjG7RwwenhzD6U/32FXr9Cp7QyWS lNtZS90LZC3UV4iQk5Q3fY1V0YL+E0bMXbG3kvC1Ybpm88QssaaZ3sKLHOIsL5GWm8T6f+ NC7yZZRnQfbjOaM8eqgQR6V4hhYfBP8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752794722; a=rsa-sha256; cv=none; b=296nMkONM699Oa0LsZoRh3nwGs4IwVPP3qB2mrNrGmFpcjD+PNeCmwuIJ6kpARQlW6LcAL EJWHy+VS69nVLvCnXisA2I7NQ/bCS00SF3nmUVzDXHUrNujDAxNyDC8ZlStT68Hdz3chzd wfkMY9vzdmtIY5yT4G/MCHU6e4R8MPQ= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TRbkjAx4; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf21.hostedemail.com: domain of kees@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=kees@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 130FA437E2; Thu, 17 Jul 2025 23:25:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 50E03C4AF0D; Thu, 17 Jul 2025 23:25:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752794720; bh=h6Zg7bnGhZLJl7gzBxEvRrK024ha+iznbtZZpACm6QM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TRbkjAx4agQoaNgy3gLSJriPgyOo5ZCrhh3RqY0GC546jkLVEZccPCSzF8ie7fy6u kWfBerRtRzKtuY8tBoSJzz6wpe622Laedp++mPG1+CmC7M1OekiauZqbXDoIfrxwaa qPbCsHOLWtVOn1W7v9sgTGhxFMBGtrfzn5esRTca8flZAjwNRqLlO5gTyJQnSWnfg+ WJcneUc8gjGzKRoq1g/v/b3UtHPiOO7ErykuiiNNVtdCQC5nlDPHQyvn5pzubaO4HM NPazOkyKiCZdmzeC3mefEGu+PJePhSvFG4uHATZJqL96ZZJo3iwGb5u8caANyBnlSk FEC4bFEVGFelQ== From: Kees Cook To: Arnd Bergmann Cc: Kees Cook , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Paolo Bonzini , Vitaly Kuznetsov , Henrique de Moraes Holschuh , Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , "Rafael J. Wysocki" , Len Brown , Masami Hiramatsu , Ard Biesheuvel , Mike Rapoport , Michal Wilczynski , Juergen Gross , Andy Shevchenko , "Kirill A. Shutemov" , Roger Pau Monne , David Woodhouse , Usama Arif , "Guilherme G. Piccoli" , Thomas Huth , Brian Gerst , kvm@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, platform-driver-x86@vger.kernel.org, linux-acpi@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-efi@vger.kernel.org, linux-mm@kvack.org, Ingo Molnar , "Gustavo A. R. Silva" , Christoph Hellwig , Andrey Konovalov , Andrey Ryabinin , Masahiro Yamada , Nathan Chancellor , Nicolas Schier , Nick Desaulniers , Bill Wendling , Justin Stitt , linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-hardening@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-security-module@vger.kernel.org, linux-kselftest@vger.kernel.org, sparclinux@vger.kernel.org, llvm@lists.linux.dev Subject: [PATCH v3 04/13] x86: Handle KCOV __init vs inline mismatches Date: Thu, 17 Jul 2025 16:25:09 -0700 Message-Id: <20250717232519.2984886-4-kees@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717231756.make.423-kees@kernel.org> References: <20250717231756.make.423-kees@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Developer-Signature: v=1; a=openpgp-sha256; l=7379; i=kees@kernel.org; h=from:subject; bh=h6Zg7bnGhZLJl7gzBxEvRrK024ha+iznbtZZpACm6QM=; b=owGbwMvMwCVmps19z/KJym7G02pJDBmVbVEsBUWRs14v3rd2ZcSn8mMh7T+55X5XTfK6NfVtU nnon9hnHaUsDGJcDLJiiixBdu5xLh5v28Pd5yrCzGFlAhnCwMUpABPx6WT4n2zhIJZwQbqtV2mf gj9/g5L3r9WHjHc+Olf9QXTtxJXKZYwMuypdt881O3ZGS1GRa0Flo/olSxb117FqYnc5ylXOiL1 mAwA= X-Developer-Key: i=kees@kernel.org; a=openpgp; fpr=A5C3F68F229DD60F723E6E138972F4DFDC6DC026 Content-Transfer-Encoding: 8bit X-Stat-Signature: dh7gp76mg5uy7zgk1rq5587y4ahykbga X-Rspamd-Queue-Id: 869641C000E X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1752794722-805069 X-HE-Meta: U2FsdGVkX18uyDDxJVM3CtGRPKNmFk1EY47oUr8MNKUNnbry8tJ1Q9lhizxosH44vqvvVCSTgtGCUXwadFpVBCeJHSbPUWtJ0Lz0D36awQdDOYV2DnTwZF7DF0AJ/EGINdAKtRcyHxNQm8n0aKDl3XkeQo6LX0kUAFLVfiRpwyK1JKetswNqwcZqVTI53FDT4QRQLAerOT+1gNuIso+C1/Rg5vMHYvsrlmOY7VJOVJ+wYZcai/J8lOxGXZuiDtBKIUC3mUO+6FaYTL42TePVbQ5JHswinF98E4ezG7jpzJL7rtpFj0TEa4HJFcP6W8Tlygw5d9QegT+z5b8pWqWqGdmF69PRZvlMFjhRm0fh03yFLia4T8kvE87lS4gBS1WaHdeeObIvlgRFL8pxDNiDbZXjxZeBAKGoBD7kmMHkpSvkhYlTYoG4oEhOFe/rYMFGZT8dfmG/f29cDoCaeoIwaf5E7A0aZDGkpmjVoo3Nruygo20wcITPkR632+i3mjBCSvx/iSc7fWjO2Hi8tdKgxoc7QJoRrBIkPEn1pGjJ4vsu0aO4GMFKiwgC0ihreOzhoA7sjATPZs9yUaLuslrtQsG8oxJWnhGD/WfhGmF606FzWzfcC7OQYaYiFxi2se2d/0dJcMCWYkGKAHjqNvMPcaXlowKc4r2wZSOem7aVXM0us4xuCSx1Zec9kzV8cA1LIEtvgxLuNw6JHCCEXc82qud/HCCvT5JabRi76fPsO+rHhMaLCeC9PB5rmFJMYgcGzAywlq7zY0DyeSRd3l/61sfNqBgTlmD/YS9xB8ydUQhwovcYJ6KeaYSTNvlLofWSpbHt4EvDvbs4Zc/4YL3qC3JXDzP0BLcsCX7wrwnUQ+k0Su8aDlr/jwRpKAQCX9GIzeO7hoZZQlV/tU+L+p+SF+Yrl0p8RxRjgu4o9BmFOSihHf0+yqtATITJHm9P8NLyTz0iKzQFoi9uVjpjBLh DK19Gwwr TGxJib0eZNF5qc/4F9ZQgXZ8/j4EknHAYSsAHzgmPivWiGi/NwUmRgijQCao4hWH03X7NX0v2ORAw3nUaOGQ9FCK9YDrzuc4Z3RtKXbDKaUt2gTCR6Ietp+MV5+6zh4InTnYj2o6bBVsGPtudI+pwvQ1Ai9zQbKk7tDm+3nMnnpQnZnPN8CcsPnyc0b8/9BzyySskNLUMi37dCoEoE0Mhs4y9i7kd9ZvYLOr0Y/ywvQLKsZ4oSkNR7nChtsCC9jIEqHftbg1HrrhEma5B0dt54cZPS1s3GX17UH4WnP3tYnvJx0nFARfgGp62AO2VLEACdo2LWqZ0OBvqHFXEg32Gfwwbjwfy231KrJ3TuWxfFWl8exUrT+USWSbYWHqBjjMN/T6DdFZCvGPN5kkJp6To1PNfvdsLPwlbG2mPaxKDjZ6O9Meb5VhVJ5VXG0tXIHwRlDcXVWqUwh0Ok8EjLc4dM3aMyF+4HpRCk5iUDnqpklgniz1253skjntrk5U8KuJ7UYirkpRjwUZ/23xLBStPxs3ro6IlOT5R16AJ+DFX8GiteVHYcl9tayOMSUXvPimrKZiOwgp00DIXuRvu5cbcgC73uH5lxbDtA/3arApMGBXyiJa4j4Rxrngdc8Oe/oq4spiITPuuMh0xps2Av+KOPyqBr+/RQn/QUcoFAcqmyO0CecGqLtCaZr3ct8shMWF5gPrDhNZ67GOZOptmnOMfwbFP6tLFVIlCU8ff153DU/RxDnKY6l6azJLWbYEoNb88TJ8lTzX9dJX0/643md5uOJjmY6NB9DPxAaGHS6PzV8E+MJuSICQGLXvEmnXgsLRE7SNk 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: When KCOV is enabled all functions get instrumented, unless the __no_sanitize_coverage attribute is used. To prepare for __no_sanitize_coverage being applied to __init functions, we have to handle differences in how GCC's inline optimizations get resolved. For x86 this means forcing several functions to be inline with __always_inline. Signed-off-by: Kees Cook --- Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: Cc: "H. Peter Anvin" Cc: Paolo Bonzini Cc: Vitaly Kuznetsov Cc: Henrique de Moraes Holschuh Cc: Hans de Goede Cc: "Ilpo Järvinen" Cc: "Rafael J. Wysocki" Cc: Len Brown Cc: Masami Hiramatsu Cc: Ard Biesheuvel Cc: Mike Rapoport Cc: Michal Wilczynski Cc: Juergen Gross Cc: Andy Shevchenko Cc: "Kirill A. Shutemov" Cc: Roger Pau Monne Cc: David Woodhouse Cc: Usama Arif Cc: "Guilherme G. Piccoli" Cc: Thomas Huth Cc: Brian Gerst Cc: Cc: Cc: Cc: Cc: Cc: Cc: --- arch/x86/include/asm/acpi.h | 4 ++-- arch/x86/include/asm/realmode.h | 2 +- include/linux/acpi.h | 4 ++-- include/linux/bootconfig.h | 2 +- include/linux/efi.h | 2 +- include/linux/memblock.h | 2 +- include/linux/smp.h | 2 +- arch/x86/kernel/kvm.c | 2 +- arch/x86/mm/init_64.c | 2 +- kernel/kexec_handover.c | 4 ++-- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 5ab1a4598d00..a03aa6f999d1 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h @@ -158,13 +158,13 @@ static inline bool acpi_has_cpu_in_madt(void) } #define ACPI_HAVE_ARCH_SET_ROOT_POINTER -static inline void acpi_arch_set_root_pointer(u64 addr) +static __always_inline void acpi_arch_set_root_pointer(u64 addr) { x86_init.acpi.set_root_pointer(addr); } #define ACPI_HAVE_ARCH_GET_ROOT_POINTER -static inline u64 acpi_arch_get_root_pointer(void) +static __always_inline u64 acpi_arch_get_root_pointer(void) { return x86_init.acpi.get_root_pointer(); } diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h index f607081a022a..e406a1e92c63 100644 --- a/arch/x86/include/asm/realmode.h +++ b/arch/x86/include/asm/realmode.h @@ -78,7 +78,7 @@ extern unsigned char secondary_startup_64[]; extern unsigned char secondary_startup_64_no_verify[]; #endif -static inline size_t real_mode_size_needed(void) +static __always_inline size_t real_mode_size_needed(void) { if (real_mode_header) return 0; /* already allocated. */ diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 71e692f95290..1c5bb1e887cd 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -759,13 +759,13 @@ int acpi_arch_timer_mem_init(struct arch_timer_mem *timer_mem, int *timer_count) #endif #ifndef ACPI_HAVE_ARCH_SET_ROOT_POINTER -static inline void acpi_arch_set_root_pointer(u64 addr) +static __always_inline void acpi_arch_set_root_pointer(u64 addr) { } #endif #ifndef ACPI_HAVE_ARCH_GET_ROOT_POINTER -static inline u64 acpi_arch_get_root_pointer(void) +static __always_inline u64 acpi_arch_get_root_pointer(void) { return 0; } diff --git a/include/linux/bootconfig.h b/include/linux/bootconfig.h index 3f4b4ac527ca..25df9260d206 100644 --- a/include/linux/bootconfig.h +++ b/include/linux/bootconfig.h @@ -290,7 +290,7 @@ int __init xbc_get_info(int *node_size, size_t *data_size); /* XBC cleanup data structures */ void __init _xbc_exit(bool early); -static inline void xbc_exit(void) +static __always_inline void xbc_exit(void) { _xbc_exit(false); } diff --git a/include/linux/efi.h b/include/linux/efi.h index 7d63d1d75f22..e3776d9cad07 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -1334,7 +1334,7 @@ struct linux_efi_initrd { bool xen_efi_config_table_is_usable(const efi_guid_t *guid, unsigned long table); -static inline +static __always_inline bool efi_config_table_is_usable(const efi_guid_t *guid, unsigned long table) { if (!IS_ENABLED(CONFIG_XEN_EFI)) diff --git a/include/linux/memblock.h b/include/linux/memblock.h index bb19a2534224..b96746376e17 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -463,7 +463,7 @@ static inline void *memblock_alloc_raw(phys_addr_t size, NUMA_NO_NODE); } -static inline void *memblock_alloc_from(phys_addr_t size, +static __always_inline void *memblock_alloc_from(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr) { diff --git a/include/linux/smp.h b/include/linux/smp.h index bea8d2826e09..18e9c918325e 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -221,7 +221,7 @@ static inline void wake_up_all_idle_cpus(void) { } #ifdef CONFIG_UP_LATE_INIT extern void __init up_late_init(void); -static inline void smp_init(void) { up_late_init(); } +static __always_inline void smp_init(void) { up_late_init(); } #else static inline void smp_init(void) { } #endif diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 921c1c783bc1..8ae750cde0c6 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -420,7 +420,7 @@ static u64 kvm_steal_clock(int cpu) return steal; } -static inline void __set_percpu_decrypted(void *ptr, unsigned long size) +static inline __init void __set_percpu_decrypted(void *ptr, unsigned long size) { early_set_memory_decrypted((unsigned long) ptr, size); } diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index fdb6cab524f0..76e33bd7c556 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -805,7 +805,7 @@ kernel_physical_mapping_change(unsigned long paddr_start, } #ifndef CONFIG_NUMA -static inline void x86_numa_init(void) +static __always_inline void x86_numa_init(void) { memblock_set_node(0, PHYS_ADDR_MAX, &memblock.memory, 0); } diff --git a/kernel/kexec_handover.c b/kernel/kexec_handover.c index 49634cc3fb43..e49743ae52c5 100644 --- a/kernel/kexec_handover.c +++ b/kernel/kexec_handover.c @@ -310,8 +310,8 @@ static int kho_mem_serialize(struct kho_serialization *ser) return -ENOMEM; } -static void deserialize_bitmap(unsigned int order, - struct khoser_mem_bitmap_ptr *elm) +static void __init deserialize_bitmap(unsigned int order, + struct khoser_mem_bitmap_ptr *elm) { struct kho_mem_phys_bits *bitmap = KHOSER_LOAD_PTR(elm->bitmap); unsigned long bit; -- 2.34.1