|
@@ -1673,8 +1673,12 @@ static int __kprobes pre_handler_kretprobe(struct kprobe *p,
|
|
ri->rp = rp;
|
|
ri->rp = rp;
|
|
ri->task = current;
|
|
ri->task = current;
|
|
|
|
|
|
- if (rp->entry_handler && rp->entry_handler(ri, regs))
|
|
|
|
|
|
+ if (rp->entry_handler && rp->entry_handler(ri, regs)) {
|
|
|
|
+ raw_spin_lock_irqsave(&rp->lock, flags);
|
|
|
|
+ hlist_add_head(&ri->hlist, &rp->free_instances);
|
|
|
|
+ raw_spin_unlock_irqrestore(&rp->lock, flags);
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
|
|
|
|
arch_prepare_kretprobe(ri, regs);
|
|
arch_prepare_kretprobe(ri, regs);
|
|
|
|
|