On Wed, Jan 18, 2017 at 03:12:55PM +0100, Peter Zijlstra wrote:
> On Wed, Jan 18, 2017 at 09:14:59PM +0900, byungchul.park wrote:
> 
> > +Example 3:
> > +
> > +   CONTEXT X                  CONTEXT Y
> > +   ---------                  ---------
> > +                      mutex_lock A
> > +   mutex_lock A
> > +   mutex_unlock A
> > +                      wait_for_complete B /* DEADLOCK */
> 
> Each line (across both columns) is a distinct point in time after the
> line before.
> 
> Therefore, this states that "mutex_unlock A" happens before
> "wait_for_completion B", which is clearly impossible.

I meant that all statements below mutex_lock A in X are already impossible.
So the order of those are meaningless. But.. I got what you mean.

> You don't have to remove everything after mutex_lock A, but the unlock
> must not happen before context Y does the unlock.

I will apply what you and boqun recommanded, from the next spin.

Thank you,
Byungchul

Reply via email to