Re: [PATCH v3] kthread_worker: Prevent queuing delayed work from timer_fn when it is being canceled

From: Tejun Heo
Date: Wed Sep 30 2020 - 11:56:43 EST


On Sun, Sep 27, 2020 at 01:54:49PM +0800, qiang.zhang@xxxxxxxxxxxxx wrote:
> From: Zqiang <qiang.zhang@xxxxxxxxxxxxx>
>
> There is a small race window when a delayed work is being canceled and
> the work still might be queued from the timer_fn:
>
> CPU0 CPU1
> kthread_cancel_delayed_work_sync()
> __kthread_cancel_work_sync()
> __kthread_cancel_work()
> work->canceling++;
> kthread_delayed_work_timer_fn()
> kthread_insert_work();
>
> BUG: kthread_insert_work() should not get called when work->canceling
> is set.
>
> Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>
> Signed-off-by: Zqiang <qiang.zhang@xxxxxxxxxxxxx>

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

This prolly should go throgh -mm. Can you please also add a stable: tag?

Thanks.

--
tejun