X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=kernel%2Fkprobes.c;h=0540948e29abf0217fc7e4edded97874aa26605c;hb=896a6de40ef3814525632609799af909338f50c3;hp=c0fa54b276d951042f69febb6df8c27190850dd9;hpb=31d496aaee1dad6ac63770035793032f2062e336;p=mv-sheeva.git diff --git a/kernel/kprobes.c b/kernel/kprobes.c index c0fa54b276d..0540948e29a 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -237,13 +237,9 @@ static int __kprobes collect_garbage_slots(void) { struct kprobe_insn_page *kip; struct hlist_node *pos, *next; - int safety; /* Ensure no-one is preepmted on the garbages */ - mutex_unlock(&kprobe_insn_mutex); - safety = check_safety(); - mutex_lock(&kprobe_insn_mutex); - if (safety != 0) + if (check_safety()) return -EAGAIN; hlist_for_each_entry_safe(kip, pos, next, &kprobe_insn_pages, hlist) { @@ -698,7 +694,7 @@ int __kprobes register_kprobe(struct kprobe *p) p->addr = addr; preempt_disable(); - if (!__kernel_text_address((unsigned long) p->addr) || + if (!kernel_text_address((unsigned long) p->addr) || in_kprobes_functions((unsigned long) p->addr)) { preempt_enable(); return -EINVAL;