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

From: Petr Mladek
Date: Thu Oct 15 2020 - 08:38:25 EST


On Wed 2020-10-14 15:50:48, Zqiang wrote:
> 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.
>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>
> Acked-by: Tejun Heo <tj@xxxxxxxxxx>
> Signed-off-by: Zqiang <qiang.zhang@xxxxxxxxxxxxx>

Andrew, are you going to take this patch with -mm tree, please?

I think that you usually take the changes in kthread.c.

Best Regards,
Petr