Re: [PATCH 1/2] workqueue: pin the pool while it is managing

From: Lai Jiangshan
Date: Fri May 29 2020 - 01:33:25 EST


On Thu, May 28, 2020 at 10:35 PM Tejun Heo <tj@xxxxxxxxxx> wrote:
>
> Hello,
>
> On Thu, May 28, 2020 at 03:06:55AM +0000, Lai Jiangshan wrote:
> > @@ -2129,10 +2128,21 @@ __acquires(&pool->lock)
> > static bool manage_workers(struct worker *worker)
> > {
> > struct worker_pool *pool = worker->pool;
> > + struct work_struct *work = list_first_entry(&pool->worklist,
> > + struct work_struct, entry);
>
> I'm not sure about this. It's depending on an external condition (active
> work item) which isn't obvious and when that condition breaks the resulting
> bug will be one which is difficult to reproduce. Adding to that, pwq isn't
> even the object this code path is interested in, which is the cause of the
> previous problem too.

Ok, I agree with you.

Thanks
Lai