diff options
Diffstat (limited to 'kernel/kprobes.c')
| -rw-r--r-- | kernel/kprobes.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 29f5b65bee2..9788c0ec6f4 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1673,8 +1673,12 @@ static int __kprobes pre_handler_kretprobe(struct kprobe *p,  		ri->rp = rp;  		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; +		}  		arch_prepare_kretprobe(ri, regs);  |