[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7d034f7b-af42-4dbc-0887-60f4bdb3dcca@I-love.SAKURA.ne.jp>
Date: Fri, 29 Jul 2022 11:49:51 +0900
From: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>
To: Johannes Berg <johannes.berg@...el.com>
Cc: Lai Jiangshan <jiangshanlai@...il.com>,
Hillf Danton <hdanton@...a.com>,
LKML <linux-kernel@...r.kernel.org>, Tejun Heo <tj@...nel.org>
Subject: Re: [PATCH] workqueue: don't skip lockdep wq dependency in
cancel_work_sync()
On 2022/07/29 11:28, Tetsuo Handa wrote:
> Thinking more, I might be confused by difference between
>
> the lockdep "struct work_struct" dependency handling
the lockdep "struct workqueue_struct" dependency handling
>
> and
>
> the lockdep "struct work" dependency handling
the lockdep "struct work_struct" dependency handling
On 2022/07/29 11:38, Lai Jiangshan wrote:
> The commit fd1a5b04dfb8("workqueue: Remove now redundant lock
> acquisitions wrt. workqueue flushes") removed this lockdep check.
>
> And the commit 87915adc3f0a("workqueue: re-add lockdep
> dependencies for flushing") added it back for non-canceling cases.
>
> It seems the commit fd1a5b04dfb8 is the culprit and 87915adc3f0a
> didn't fixes all the problem of it.
>
> So it is better to complete 87915adc3f0a by making __flush_work()
> does lock_map_acquire(&work->lockdep_map) for both canceling and
> non-canceling cases.
Yes, commit 87915adc3f0acdf0 was incomplete.
Powered by blists - more mailing lists