Re: [PATCH 1/3] stop_machine: kill __stop_machine()

From: Suresh Siddha
Date: Thu Jun 16 2011 - 14:44:36 EST


On Thu, 2011-06-16 at 11:36 -0700, Peter Zijlstra wrote:
> On Thu, 2011-06-16 at 20:28 +0200, Tejun Heo wrote:
> > Peter, I don't think it's that simple. get_online_cpus() itself can't
> > create circular dependency by itself. It allows recursing. The chain
> > involves cpu_hotplug_begin() which returns with hotplug mutex held.
>
>
> Right, its like:
>
> mutex_lock(&a);
> get_online_cpus();
>
> vs
>
> cpu_hotplug_begin()
> mutex_lock(&a);
>
>
> that will really deadlock

Its actually like:

get_online_cpus();
mutex_lock(&a);
get_online_cpus(); <--- recursive get_online_cpus()

vs

cpu_hotplug_begin()
mutex_lock(&a);

So it can't cause deadlock in practice.

thanks,
suresh

--
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/