On Wed, Dec 05, 2018 at 05:25:26PM +0100, Ingo Molnar wrote: > Also, preferably the prototype should be eliminated via proper ordering > of functions from lower level to higher levels. Well, that trampoline_handler() is special as we call it from inline asm and I see Masami has marked it __visible etc. So doing this below still builds and the trampoline_handler doesn't get discarded but maybe there's a reason for it not being static. Masami? --- diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c index 6480056d370f..308bf103cc73 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -66,8 +66,6 @@ #include "common.h" -void *trampoline_handler(struct pt_regs *regs); - DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); @@ -753,7 +751,7 @@ STACK_FRAME_NON_STANDARD(kretprobe_trampoline); /* * Called from kretprobe_trampoline */ -__visible __used void *trampoline_handler(struct pt_regs *regs) +static __used void *trampoline_handler(struct pt_regs *regs) { struct kretprobe_instance *ri = NULL; struct hlist_head *head, empty_rp; -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.