|
@@ -274,7 +274,7 @@ no_kprobe:
|
|
* - When the probed function returns, this probe
|
|
* - When the probed function returns, this probe
|
|
* causes the handlers to fire
|
|
* causes the handlers to fire
|
|
*/
|
|
*/
|
|
-void kretprobe_trampoline_holder(void)
|
|
|
|
|
|
+static void __used kretprobe_trampoline_holder(void)
|
|
{
|
|
{
|
|
asm volatile(".global kretprobe_trampoline\n"
|
|
asm volatile(".global kretprobe_trampoline\n"
|
|
"kretprobe_trampoline:\n"
|
|
"kretprobe_trampoline:\n"
|
|
@@ -284,7 +284,8 @@ void kretprobe_trampoline_holder(void)
|
|
/*
|
|
/*
|
|
* Called when the probe at kretprobe trampoline is hit
|
|
* Called when the probe at kretprobe trampoline is hit
|
|
*/
|
|
*/
|
|
-int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
|
|
|
|
|
|
+static int __kprobes trampoline_probe_handler(struct kprobe *p,
|
|
|
|
+ struct pt_regs *regs)
|
|
{
|
|
{
|
|
struct kretprobe_instance *ri = NULL;
|
|
struct kretprobe_instance *ri = NULL;
|
|
struct hlist_head *head, empty_rp;
|
|
struct hlist_head *head, empty_rp;
|
|
@@ -517,12 +518,12 @@ int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
-void __kprobes jprobe_return(void)
|
|
|
|
|
|
+void __used __kprobes jprobe_return(void)
|
|
{
|
|
{
|
|
asm volatile("trap" ::: "memory");
|
|
asm volatile("trap" ::: "memory");
|
|
}
|
|
}
|
|
|
|
|
|
-void __kprobes jprobe_return_end(void)
|
|
|
|
|
|
+static void __used __kprobes jprobe_return_end(void)
|
|
{
|
|
{
|
|
};
|
|
};
|
|
|
|
|