mirror of https://github.com/torvalds/linux.git
arm: Handle KCOV __init vs inline mismatches
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 arm this exposed several places where __init annotations were missing but ended up being "accidentally correct". Fix these cases and force several functions to be inline with __always_inline. Acked-by: Nishanth Menon <nm@ti.com> Acked-by: Lee Jones <lee@kernel.org> Reviewed-by: Nishanth Menon <nm@ti.com> Link: https://lore.kernel.org/r/20250717232519.2984886-5-kees@kernel.org Signed-off-by: Kees Cook <kees@kernel.org>
This commit is contained in:
parent
d01daf9d95
commit
2424fe1cac
|
|
@ -295,7 +295,7 @@ static inline u32 read_extra_features(void)
|
|||
return u;
|
||||
}
|
||||
|
||||
static inline void write_extra_features(u32 u)
|
||||
static inline void __init write_extra_features(u32 u)
|
||||
{
|
||||
__asm__("mcr p15, 1, %0, c15, c1, 0" : : "r" (u));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ static inline void __init write_actlr(u32 actlr)
|
|||
__asm__("mcr p15, 0, %0, c1, c0, 1\n" : : "r" (actlr));
|
||||
}
|
||||
|
||||
static void enable_extra_feature(unsigned int features)
|
||||
static void __init enable_extra_feature(unsigned int features)
|
||||
{
|
||||
u32 u;
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ static struct delay_timer orion_delay_timer = {
|
|||
.read_current_timer = orion_read_timer,
|
||||
};
|
||||
|
||||
static void orion_delay_timer_init(unsigned long rate)
|
||||
static void __init orion_delay_timer_init(unsigned long rate)
|
||||
{
|
||||
orion_delay_timer.freq = rate;
|
||||
register_current_timer_delay(&orion_delay_timer);
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ static int am33xx_do_sram_idle(u32 wfi_flags)
|
|||
return pm_ops->cpu_suspend(am33xx_do_wfi_sram, wfi_flags);
|
||||
}
|
||||
|
||||
static int __init am43xx_map_gic(void)
|
||||
static int am43xx_map_gic(void)
|
||||
{
|
||||
gic_dist_base = ioremap(AM43XX_GIC_DIST_BASE, SZ_4K);
|
||||
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ struct prcmu_fw_version {
|
|||
|
||||
#if defined(CONFIG_UX500_SOC_DB8500)
|
||||
|
||||
static inline void prcmu_early_init(void)
|
||||
static inline void __init prcmu_early_init(void)
|
||||
{
|
||||
db8500_prcmu_early_init();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue