lkml.org 
[lkml]   [2014]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v1] CPU hotplug: active_reader not woken up in some cases - deadlock
On Mon, Dec 08, 2014 at 08:30:18PM +0100, David Hildenbrand wrote:
> > > active_writer is cleared while holding cpuhp_lock, so this should be safe,
> > > right?
> >
> > You lost me on that one. Don't we get to that piece of code precisely
> > because we don't hold any of the CPU-hotplug locks? If so, the
> > writer might well hold all the locks it needs, and might well change
> > cpu_hotplug.active_writer out from under us.
> >
> > What am I missing here?
> >
> > Thanx, Paul
>
> I was missing that cpuhp_lock_* are simply lockdep anotations ... it's
> getting late :)
>
> So you're right, we need to verify that we don't get a 0 on the second access.

All you should need to do is to do something like this:

awp = ACCESS_ONCE(cpu_hotplug.active_writer);
if (awp)
wake_up_process(cpu_hotplug.active_writer);

That way you only have one access, and the check and wake_up_process()
are guaranteed to be consistent.

> Will send an updated version soon.

Sounds good!

Thanx, Paul



\
 
 \ /
  Last update: 2014-12-09 01:21    [W:0.035 / U:1.500 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site