workqueues: lockdep annotations for flush_work()
Add lockdep annotations to flush_work() and update the comment. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Cc: Jarek Poplawski <jarkao2@o2.pl> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
69b895fd13
commit
a67da70dc0
1 changed files with 5 additions and 0 deletions
|
@ -427,6 +427,8 @@ EXPORT_SYMBOL_GPL(flush_workqueue);
|
|||
* flush_work - block until a work_struct's callback has terminated
|
||||
* @work: the work which is to be flushed
|
||||
*
|
||||
* Returns false if @work has already terminated.
|
||||
*
|
||||
* It is expected that, prior to calling flush_work(), the caller has
|
||||
* arranged for the work to not be requeued, otherwise it doesn't make
|
||||
* sense to use this function.
|
||||
|
@ -442,6 +444,9 @@ int flush_work(struct work_struct *work)
|
|||
if (!cwq)
|
||||
return 0;
|
||||
|
||||
lock_acquire(&cwq->wq->lockdep_map, 0, 0, 0, 2, _THIS_IP_);
|
||||
lock_release(&cwq->wq->lockdep_map, 1, _THIS_IP_);
|
||||
|
||||
prev = NULL;
|
||||
spin_lock_irq(&cwq->lock);
|
||||
if (!list_empty(&work->entry)) {
|
||||
|
|
Loading…
Reference in a new issue