Skip to content

Commit 245b993

Browse files
masahir0yliuw
authored andcommitted
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource()
EXPORT_SYMBOL and __init is a bad combination because the .init.text section is freed up after the initialization. Hence, modules cannot use symbols annotated __init. The access to a freed symbol may end up with kernel panic. modpost used to detect it, but it has been broken for a decade. Recently, I fixed modpost so it started to warn it again, then this showed up in linux-next builds. There are two ways to fix it: - Remove __init - Remove EXPORT_SYMBOL I chose the latter for this case because the only in-tree call-site, arch/x86/kernel/cpu/mshyperv.c is never compiled as modular. (CONFIG_HYPERVISOR_GUEST is boolean) Fixes: dd2cb34 ("clocksource/drivers: Continue making Hyper-V clocksource ISA agnostic") Reported-by: Stephen Rothwell <[email protected]> Signed-off-by: Masahiro Yamada <[email protected]> Reviewed-by: Vitaly Kuznetsov <[email protected]> Reviewed-by: Michael Kelley <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Wei Liu <[email protected]>
1 parent 92ec746 commit 245b993

File tree

1 file changed

+0
-1
lines changed

1 file changed

+0
-1
lines changed

drivers/clocksource/hyperv_timer.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,4 +565,3 @@ void __init hv_init_clocksource(void)
565565
hv_sched_clock_offset = hv_read_reference_counter();
566566
hv_setup_sched_clock(read_hv_sched_clock_msr);
567567
}
568-
EXPORT_SYMBOL_GPL(hv_init_clocksource);

0 commit comments

Comments
 (0)