The patch titled workqueues: add kerneldoc for flush_scheduled_work() has been added to the -mm tree. Its filename is workqueues-add-kerneldoc-for-flush_scheduled_work.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: workqueues: add kerneldoc for flush_scheduled_work() From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> This patch (as1279) adds kerneldoc for flush_scheduled_work() containing a stern warning that the function should be avoided. Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/workqueue.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff -puN kernel/workqueue.c~workqueues-add-kerneldoc-for-flush_scheduled_work kernel/workqueue.c --- a/kernel/workqueue.c~workqueues-add-kerneldoc-for-flush_scheduled_work +++ a/kernel/workqueue.c @@ -689,6 +689,24 @@ int schedule_on_each_cpu(work_func_t fun return 0; } +/** + * flush_scheduled_work - ensure that all work scheduled on keventd_wq has run to completion. + * + * Blocks until all works on the keventd_wq global workqueue have completed. + * We sleep until all works present upon entry have been handled, but we + * are not livelocked by new incoming ones. + * + * Use of this function is discouraged, as it is highly prone to deadlock. + * It should never be called from within a work routine on the global + * queue, and it should never be called while holding a mutex required + * by one of the works on the global queue. But the fact that keventd_wq + * _is_ global means that it can contain works requiring practically any + * mutex. Hence this routine shouldn't be called while holding any mutex. + * + * Consider using cancel_work_sync() or cancel_delayed_work_sync() instead. + * They don't do the same thing (they cancel the work instead of waiting + * for it to complete), but in most cases they will suffice. + */ void flush_scheduled_work(void) { flush_workqueue(keventd_wq); _ Patches currently in -mm which might be from stern@xxxxxxxxxxxxxxxxxxx are origin.patch linux-next.patch drivers-usb-gadget-s3c2410_udcc-fix.patch workqueues-add-kerneldoc-for-flush_scheduled_work.patch -- 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