lkml.org 
[lkml]   [2020]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] kthread: Don't cancel a work that is being cancelled
Date
From: Zhang Qiang <qiang.zhang@windriver.com>

When canceling a work, if it is found that the work is in
the cancelling state, we should directly exit the cancelled
operation.

Signed-off-by: Zhang Qiang <qiang.zhang@windriver.com>
---
kernel/kthread.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/kernel/kthread.c b/kernel/kthread.c
index bfbfa481be3a..1166f2043e67 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -1103,6 +1103,9 @@ static bool __kthread_cancel_work_sync(struct kthread_work *work, bool is_dwork)
/* Work must not be used with >1 worker, see kthread_queue_work(). */
WARN_ON_ONCE(work->worker != worker);

+ if (work->canceling)
+ goto out_fast;
+
ret = __kthread_cancel_work(work, is_dwork, &flags);

if (worker->current_work != work)
--
2.24.1
\
 
 \ /
  Last update: 2020-07-03 08:31    [W:0.841 / U:0.504 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site