Re: [PATCH 4/9] jump label: Fix deadlock b/w jump_label_mutex vs.text_mutex

From: Peter Zijlstra
Date: Fri Oct 15 2010 - 16:56:13 EST


On Fri, 2010-10-15 at 16:09 -0400, Steven Rostedt wrote:
> +void jump_label_lock(void)
> +{
> + mutex_lock(&jump_label_mutex);
> +}
> +

> +++ b/kernel/kprobes.c
> @@ -1145,13 +1145,16 @@ int __kprobes register_kprobe(struct kprobe *p)
> return ret;
>
> preempt_disable();
> + jump_label_lock();

How exactly does that work?

> if (!kernel_text_address((unsigned long) p->addr) ||
> in_kprobes_functions((unsigned long) p->addr) ||
> ftrace_text_reserved(p->addr, p->addr) ||
> jump_label_text_reserved(p->addr, p->addr)) {
> preempt_enable();
> + jump_label_unlock();
> return -EINVAL;
> }
> + jump_label_unlock();
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/