[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250724055029.3623499-1-kees@kernel.org>
Date: Wed, 23 Jul 2025 22:50:25 -0700
From: Kees Cook <kees@...nel.org>
To: Arnd Bergmann <arnd@...db.de>
Cc: Kees Cook <kees@...nel.org>,
Will Deacon <will@...nel.org>,
Ard Biesheuvel <ardb@...nel.org>,
Catalin Marinas <catalin.marinas@....com>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>,
Gavin Shan <gshan@...hat.com>,
"Russell King (Oracle)" <rmk+kernel@...linux.org.uk>,
James Morse <james.morse@....com>,
Oza Pawandeep <quic_poza@...cinc.com>,
Anshuman Khandual <anshuman.khandual@....com>,
linux-arm-kernel@...ts.infradead.org,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>,
"H. Peter Anvin" <hpa@...or.com>,
Paolo Bonzini <pbonzini@...hat.com>,
Mike Rapoport <rppt@...nel.org>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
Henrique de Moraes Holschuh <hmh@....eng.br>,
Hans de Goede <hansg@...nel.org>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Len Brown <lenb@...nel.org>,
Masami Hiramatsu <mhiramat@...nel.org>,
Michal Wilczynski <michal.wilczynski@...el.com>,
Juergen Gross <jgross@...e.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
"Kirill A. Shutemov" <kas@...nel.org>,
Roger Pau Monne <roger.pau@...rix.com>,
David Woodhouse <dwmw@...zon.co.uk>,
Usama Arif <usama.arif@...edance.com>,
"Guilherme G. Piccoli" <gpiccoli@...lia.com>,
Thomas Huth <thuth@...hat.com>,
Brian Gerst <brgerst@...il.com>,
Marco Elver <elver@...gle.com>,
Andrey Konovalov <andreyknvl@...il.com>,
Andrey Ryabinin <ryabinin.a.a@...il.com>,
Hou Wenlong <houwenlong.hwl@...group.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Masahiro Yamada <masahiroy@...nel.org>,
"Peter Zijlstra (Intel)" <peterz@...radead.org>,
Luis Chamberlain <mcgrof@...nel.org>,
Sami Tolvanen <samitolvanen@...gle.com>,
Christophe Leroy <christophe.leroy@...roup.eu>,
Nathan Chancellor <nathan@...nel.org>,
Nicolas Schier <nicolas.schier@...ux.dev>,
"Gustavo A. R. Silva" <gustavoars@...nel.org>,
Andy Lutomirski <luto@...nel.org>,
Baoquan He <bhe@...hat.com>,
Alexander Graf <graf@...zon.com>,
Changyuan Lyu <changyuanl@...gle.com>,
Paul Moore <paul@...l-moore.com>,
James Morris <jmorris@...ei.org>,
"Serge E. Hallyn" <serge@...lyn.com>,
Nick Desaulniers <nick.desaulniers+lkml@...il.com>,
Bill Wendling <morbo@...gle.com>,
Justin Stitt <justinstitt@...gle.com>,
Jan Beulich <jbeulich@...e.com>,
Boqun Feng <boqun.feng@...il.com>,
Viresh Kumar <viresh.kumar@...aro.org>,
"Paul E. McKenney" <paulmck@...nel.org>,
Bibo Mao <maobibo@...ngson.cn>,
linux-kernel@...r.kernel.org,
x86@...nel.org,
kvm@...r.kernel.org,
ibm-acpi-devel@...ts.sourceforge.net,
platform-driver-x86@...r.kernel.org,
linux-acpi@...r.kernel.org,
linux-trace-kernel@...r.kernel.org,
linux-efi@...r.kernel.org,
linux-mm@...ck.org,
kasan-dev@...glegroups.com,
linux-kbuild@...r.kernel.org,
linux-hardening@...r.kernel.org,
kexec@...ts.infradead.org,
linux-security-module@...r.kernel.org,
llvm@...ts.linux.dev
Subject: [PATCH v4 1/4] arm64: Handle KCOV __init vs inline mismatches
GCC appears to have kind of fragile inlining heuristics, in the
sense that it can change whether or not it inlines something based on
optimizations. It looks like the kcov instrumentation being added (or in
this case, removed) from a function changes the optimization results,
and some functions marked "inline" are _not_ inlined. In that case,
we end up with __init code calling a function not marked __init, and we
get the build warnings I'm trying to eliminate in the coming patch that
adds __no_sanitize_coverage to __init functions:
WARNING: modpost: vmlinux: section mismatch in reference: acpi_get_enable_method+0x1c (section: .text.unlikely) -> acpi_psci_present (section: .init.text)
This problem is somewhat fragile (though using either __always_inline
or __init will deterministically solve it), but we've tripped over
this before with GCC and the solution has usually been to just use
__always_inline and move on.
For arm64 this requires forcing one ACPI function to be inlined with
__always_inline.
Signed-off-by: Kees Cook <kees@...nel.org>
---
Cc: Will Deacon <will@...nel.org>
Cc: Ard Biesheuvel <ardb@...nel.org>
Cc: Catalin Marinas <catalin.marinas@....com>
Cc: Jonathan Cameron <Jonathan.Cameron@...wei.com>
Cc: Gavin Shan <gshan@...hat.com>
Cc: "Russell King (Oracle)" <rmk+kernel@...linux.org.uk>
Cc: James Morse <james.morse@....com>
Cc: Oza Pawandeep <quic_poza@...cinc.com>
Cc: Anshuman Khandual <anshuman.khandual@....com>
Cc: <linux-arm-kernel@...ts.infradead.org>
---
arch/arm64/include/asm/acpi.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
index a407f9cd549e..c07a58b96329 100644
--- a/arch/arm64/include/asm/acpi.h
+++ b/arch/arm64/include/asm/acpi.h
@@ -150,7 +150,7 @@ acpi_set_mailbox_entry(int cpu, struct acpi_madt_generic_interrupt *processor)
{}
#endif
-static inline const char *acpi_get_enable_method(int cpu)
+static __always_inline const char *acpi_get_enable_method(int cpu)
{
if (acpi_psci_present())
return "psci";
--
2.34.1
Powered by blists - more mailing lists