mirror of https://gitee.com/openkylin/linux.git
[PATCH] kprobes: moves lock-unlock to non-arch kprobe_flush_task
This patch moves the lock/unlock of the arch specific kprobe_flush_task() to the non-arch specific kprobe_flusk_task(). Signed-off-by: Hien Nguyen <hien@us.ibm.com> Acked-by: Prasanna S Panchamukhi <prasanna@in.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
7e1048b11c
commit
0aa55e4d7d
|
@ -138,17 +138,14 @@ void arch_prepare_kretprobe(struct kretprobe *rp, struct pt_regs *regs)
|
|||
}
|
||||
}
|
||||
|
||||
void arch_kprobe_flush_task(struct task_struct *tk, spinlock_t *kp_lock)
|
||||
void arch_kprobe_flush_task(struct task_struct *tk)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
struct kretprobe_instance *ri;
|
||||
spin_lock_irqsave(kp_lock, flags);
|
||||
while ((ri = get_rp_inst_tsk(tk)) != NULL) {
|
||||
*((unsigned long *)(ri->stack_addr)) =
|
||||
(unsigned long) ri->ret_addr;
|
||||
recycle_rp_inst(ri);
|
||||
}
|
||||
spin_unlock_irqrestore(kp_lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
#include <asm/kprobes.h>
|
||||
|
||||
|
@ -101,7 +100,7 @@ extern void trampoline_post_handler(struct kprobe *p, struct pt_regs *regs,
|
|||
unsigned long flags);
|
||||
extern struct task_struct *arch_get_kprobe_task(void *ptr);
|
||||
extern void arch_prepare_kretprobe(struct kretprobe *rp, struct pt_regs *regs);
|
||||
extern void arch_kprobe_flush_task(struct task_struct *tk, spinlock_t *kp_lock);
|
||||
extern void arch_kprobe_flush_task(struct task_struct *tk);
|
||||
#else /* ARCH_SUPPORTS_KRETPROBES */
|
||||
static inline void kretprobe_trampoline(void)
|
||||
{
|
||||
|
|
|
@ -229,7 +229,10 @@ struct kretprobe_instance *get_rp_inst_tsk(struct task_struct *tk)
|
|||
*/
|
||||
void kprobe_flush_task(struct task_struct *tk)
|
||||
{
|
||||
arch_kprobe_flush_task(tk, &kprobe_lock);
|
||||
unsigned long flags = 0;
|
||||
spin_lock_irqsave(&kprobe_lock, flags);
|
||||
arch_kprobe_flush_task(tk);
|
||||
spin_unlock_irqrestore(&kprobe_lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue