> On Jun 25, 2019, at 5:35 PM, Yonghong Song <yhs@xxxxxx> wrote: > > With CONFIG_MODULES=n, the following compiler warning occurs: > /data/users/yhs/work/net-next/kernel/trace/bpf_trace.c:605:13: warning: > ‘do_bpf_send_signal’ defined but not used [-Wunused-function] > static void do_bpf_send_signal(struct irq_work *entry) > > The __init function send_signal_irq_work_init(), which calls > do_bpf_send_signal(), is defined under CONFIG_MODULES. Hence, > when CONFIG_MODULES=n, nobody calls static function do_bpf_send_signal(), > hence the warning. > > The init function send_signal_irq_work_init() should work without > CONFIG_MODULES. Moving it out of CONFIG_MODULES > code section fixed the compiler warning, and also make bpf_send_signal() > helper work without CONFIG_MODULES. > > Fixes: 8b401f9ed244 ("bpf: implement bpf_send_signal() helper") > Reported-By: Arnd Bergmann <arnd@xxxxxxxx> > Signed-off-by: Yonghong Song <yhs@xxxxxx> Thanks for the fix! Acked-by: Song Liu <songliubraving@xxxxxx> > --- > kernel/trace/bpf_trace.c | 27 ++++++++++++++------------- > 1 file changed, 14 insertions(+), 13 deletions(-) > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > index c102c240bb0b..ca1255d14576 100644 > --- a/kernel/trace/bpf_trace.c > +++ b/kernel/trace/bpf_trace.c > @@ -1431,6 +1431,20 @@ int bpf_get_perf_event_info(const struct perf_event *event, u32 *prog_id, > return err; > } > > +static int __init send_signal_irq_work_init(void) > +{ > + int cpu; > + struct send_signal_irq_work *work; > + > + for_each_possible_cpu(cpu) { > + work = per_cpu_ptr(&send_signal_work, cpu); > + init_irq_work(&work->irq_work, do_bpf_send_signal); > + } > + return 0; > +} > + > +subsys_initcall(send_signal_irq_work_init); > + > #ifdef CONFIG_MODULES > static int bpf_event_notify(struct notifier_block *nb, unsigned long op, > void *module) > @@ -1478,18 +1492,5 @@ static int __init bpf_event_init(void) > return 0; > } > > -static int __init send_signal_irq_work_init(void) > -{ > - int cpu; > - struct send_signal_irq_work *work; > - > - for_each_possible_cpu(cpu) { > - work = per_cpu_ptr(&send_signal_work, cpu); > - init_irq_work(&work->irq_work, do_bpf_send_signal); > - } > - return 0; > -} > - > fs_initcall(bpf_event_init); > -subsys_initcall(send_signal_irq_work_init); > #endif /* CONFIG_MODULES */ > -- > 2.17.1 >