Re: [PATCH 4/4] lockdep: Fix workqueue crossrelease annotation

From: Byungchul Park
Date: Tue Sep 05 2017 - 07:25:03 EST


On Tue, Sep 05, 2017 at 12:52:36PM +0200, Peter Zijlstra wrote:
> On Tue, Sep 05, 2017 at 07:31:44PM +0900, Byungchul Park wrote:
> > Let me show you a possible scenario with a leaf lock:
> >
> > lock(A)
> > lock(A) wait_for_completion(B)
> > unlock(A) ...
> > ... unlock(A)
> > process_one_work()
> > work->func()
> > complete(B)
> >
> > It's a deadlock by a lead lock A and completion B.
>
> By having wait_for_completion() in it, A is not a leaf lock.

I see. After all, you want to force to use only leaf locks in (1), (3)
and (5) forever in future. I really don't understand why you want to
force it and use them carefully always in head, *only* for that locks,
though original code even makes it unnecessary.

But ok...

Let's discuss the issue later if necessary.

Again, I think your patches are worth nothing but avoiding the
workqueue issue. I really hope you think it more, but it's ok if you
don't want...