summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2009-04-22 11:01:49 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-24 14:47:59 (GMT)
commit418df63c2d94f238ac7e1d1d53be35dd6b7a7252 (patch)
treed9ab346ae46a45a4bff12fe7dbc615b7469d17a5
parent3e241ff0c57cb610301009fe8c3b9da4c6877800 (diff)
downloadlinux-418df63c2d94f238ac7e1d1d53be35dd6b7a7252.tar.xz
Delete slow-work timers properly
Slow-work appears to delete its timer as soon as the first user unregisters, even though other users could be active. At the same time, it never seems to delete slow_work_oom_timer. Arrange for both to happen in the shutdown path. Signed-off-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/slow-work.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/slow-work.c b/kernel/slow-work.c
index cf2bc01..b28d1913 100644
--- a/kernel/slow-work.c
+++ b/kernel/slow-work.c
@@ -609,14 +609,14 @@ void slow_work_unregister_user(void)
if (slow_work_user_count == 0) {
printk(KERN_NOTICE "Slow work thread pool: Shutting down\n");
slow_work_threads_should_exit = true;
+ del_timer_sync(&slow_work_cull_timer);
+ del_timer_sync(&slow_work_oom_timer);
wake_up_all(&slow_work_thread_wq);
wait_for_completion(&slow_work_last_thread_exited);
printk(KERN_NOTICE "Slow work thread pool:"
" Shut down complete\n");
}
- del_timer_sync(&slow_work_cull_timer);
-
mutex_unlock(&slow_work_user_lock);
}
EXPORT_SYMBOL(slow_work_unregister_user);