[lkml]   [2020]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: 回复: [PATCH v5 ] workqueue: Remove unnecessary kfree() call in rcu_free_wq()
On Thu, May 28, 2020 at 08:08:06PM +0800, Lai Jiangshan wrote:
> On Thu, May 28, 2020 at 5:57 PM Dan Carpenter <> wrote:
> >
> > Guys, the patch is wrong. The kfree is harmless when this is called
> > from destroy_workqueue() and required when it's called from
> > pwq_unbound_release_workfn(). Lai Jiangshan already explained this
> > already. Why are we still discussing this?
> >
> I'm also confused why they have been debating about the changelog
> after the patch was queued. My statement was about "the patch is
> a correct cleanup, but the changelog is totally misleading".
> destroy_workqueue(percpu_wq) -> rcu_free_wq()
> or
> destroy_workqueue(unbound_wq) -> put_pwq() ->
> pwq_unbound_release_workfn() -> rcu_free_wq()
> So the patch is correct to me. Only can destroy_workqueue()
> lead to rcu_free_wq().

It looks like there are lots of paths which call put_pwq() and

1168 static void pwq_dec_nr_in_flight(struct pool_workqueue *pwq, int color)
1169 {
1170 /* uncolored work items don't participate in flushing or nr_active */
1171 if (color == WORK_NO_COLOR)
1172 goto out_put;

We don't take an extra reference in this function.

1200 out_put:
1201 put_pwq(pwq);
1202 }

I don't know this code well, so I will defer to your expertise if you
say it is correct.

> Still, the kfree(NULL) is harmless. But it is cleaner
> to have the patch. But the changelog is wrong, even after
> the lengthened debating, and English is not my mother tongue,
> so I just looked on.

We have tried to tell Markus not to advise people about commit messages
but he doesn't listen. He has discouraged some contributors. :/

dan carpenter

 \ /
  Last update: 2020-05-28 14:29    [W:0.186 / U:1.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site