History

tick/nohz: unexport __init-annotated tick_nohz_full_setup()

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 had been broken for a decade. Commit 28438794aba4 ("modpost: fix section mismatch check for exported init/exit sections") fixed it so modpost started to warn it again, then this showed up: MODPOST vmlinux.symvers WARNING: modpost: vmlinux.o(___ksymtab_gpl+tick_nohz_full_setup+0x0): Section mismatch in reference from the variable __ksymtab_tick_nohz_full_setup to the function .init.text:tick_nohz_full_setup() The symbol tick_nohz_full_setup is exported and annotated __init Fix this by removing the __init annotation of tick_nohz_full_setup or drop the export. Drop the export because tick_nohz_full_setup() is only called from the built-in code in kernel/sched/isolation.c.

Masahiro Yamada committed 4 years ago

Commit 23900951 parent 03c765b1 file · +0 −1Browse files

Unified · Split

kernel/time/tick-sched.c+0−1
@@ -526,7 +526,6 @@ void __init tick_nohz_full_setup(cpumask_var_t cpumask) · 525 unmodified lines
526 cpumask_copy(tick_nohz_full_mask, cpumask);526 cpumask_copy(tick_nohz_full_mask, cpumask);
527 tick_nohz_full_running = true;527 tick_nohz_full_running = true;
528}528}
529EXPORT_SYMBOL_GPL(tick_nohz_full_setup);
530 529
531static int tick_nohz_cpu_down(unsigned int cpu)530static int tick_nohz_cpu_down(unsigned int cpu)
532{531{

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t