The patch titled Subject: kthread: add kthread_destroy_worker() has been removed from the -mm tree. Its filename was kthread-add-kthread_destroy_worker.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ From: Petr Mladek <pmladek@xxxxxxxx> Subject: kthread: add kthread_destroy_worker() The current kthread worker users call flush() and stop() explicitly. This function does the same plus it frees the kthread_worker struct in one call. It is supposed to be used together with kthread_create_worker*() that allocates struct kthread_worker. Link: http://lkml.kernel.org/r/1470754545-17632-7-git-send-email-pmladek@xxxxxxxx Signed-off-by: Petr Mladek <pmladek@xxxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> Cc: "Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> Cc: Josh Triplett <josh@xxxxxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Jiri Kosina <jkosina@xxxxxxx> Cc: Borislav Petkov <bp@xxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/kthread.h | 2 ++ kernel/kthread.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff -puN include/linux/kthread.h~kthread-add-kthread_destroy_worker include/linux/kthread.h --- a/include/linux/kthread.h~kthread-add-kthread_destroy_worker +++ a/include/linux/kthread.h @@ -136,4 +136,6 @@ bool kthread_queue_work(struct kthread_w void kthread_flush_work(struct kthread_work *work); void kthread_flush_worker(struct kthread_worker *worker); +void kthread_destroy_worker(struct kthread_worker *worker); + #endif /* _LINUX_KTHREAD_H */ diff -puN kernel/kthread.c~kthread-add-kthread_destroy_worker kernel/kthread.c --- a/kernel/kthread.c~kthread-add-kthread_destroy_worker +++ a/kernel/kthread.c @@ -823,3 +823,26 @@ void kthread_flush_worker(struct kthread wait_for_completion(&fwork.done); } EXPORT_SYMBOL_GPL(kthread_flush_worker); + +/** + * kthread_destroy_worker - destroy a kthread worker + * @worker: worker to be destroyed + * + * Flush and destroy @worker. The simple flush is enough because the kthread + * worker API is used only in trivial scenarios. There are no multi-step state + * machines needed. + */ +void kthread_destroy_worker(struct kthread_worker *worker) +{ + struct task_struct *task; + + task = worker->task; + if (WARN_ON(!task)) + return; + + kthread_flush_worker(worker); + kthread_stop(task); + WARN_ON(!list_empty(&worker->work_list)); + kfree(worker); +} +EXPORT_SYMBOL(kthread_destroy_worker); _ Patches currently in -mm which might be from pmladek@xxxxxxxx are -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html