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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>