This is a note to let you know that I've just added the patch titled Revert "workqueue: remove unused cancel_work()" to the 5.15-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: revert-workqueue-remove-unused-cancel_work.patch and it can be found in the queue-5.15 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. commit 9f0fbbc9754349435c6fec5448ca21df41ec4c33 Author: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> Date: Thu May 19 09:47:28 2022 -0400 Revert "workqueue: remove unused cancel_work()" [ Upstream commit 73b4b53276a1d6290cd4f47dbbc885b6e6e59ac6 ] This reverts commit 6417250d3f894e66a68ba1cd93676143f2376a6f. amdpgu need this function in order to prematurly stop pending reset works when another reset work already in progress. Acked-by: Tejun Heo <tj@xxxxxxxxxx> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> Reviewed-by: Lai Jiangshan<jiangshanlai@xxxxxxxxx> Reviewed-by: Christian König <christian.koenig@xxxxxxx> Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> Stable-dep-of: 91d3d149978b ("r8169: prevent potential deadlock in rtl8169_close") Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 1e96680f50230..5f2e531d0a80d 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -462,6 +462,7 @@ extern int schedule_on_each_cpu(work_func_t func); int execute_in_process_context(work_func_t fn, struct execute_work *); extern bool flush_work(struct work_struct *work); +extern bool cancel_work(struct work_struct *work); extern bool cancel_work_sync(struct work_struct *work); extern bool flush_delayed_work(struct delayed_work *dwork); diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 962ee27ec7d70..d5f30b610217e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3277,6 +3277,15 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) return ret; } +/* + * See cancel_delayed_work() + */ +bool cancel_work(struct work_struct *work) +{ + return __cancel_work(work, false); +} +EXPORT_SYMBOL(cancel_work); + /** * cancel_delayed_work - cancel a delayed work * @dwork: delayed_work to cancel