diff options
author | Jonathan Corbet <corbet@lwn.net> | 2009-04-22 07:01:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-24 10:47:59 -0400 |
commit | 418df63c2d94f238ac7e1d1d53be35dd6b7a7252 (patch) | |
tree | d9ab346ae46a45a4bff12fe7dbc615b7469d17a5 /kernel | |
parent | 3e241ff0c57cb610301009fe8c3b9da4c6877800 (diff) |
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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/slow-work.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/slow-work.c b/kernel/slow-work.c index cf2bc01186ef..b28d19135f43 100644 --- a/kernel/slow-work.c +++ b/kernel/slow-work.c | |||
@@ -609,14 +609,14 @@ void slow_work_unregister_user(void) | |||
609 | if (slow_work_user_count == 0) { | 609 | if (slow_work_user_count == 0) { |
610 | printk(KERN_NOTICE "Slow work thread pool: Shutting down\n"); | 610 | printk(KERN_NOTICE "Slow work thread pool: Shutting down\n"); |
611 | slow_work_threads_should_exit = true; | 611 | slow_work_threads_should_exit = true; |
612 | del_timer_sync(&slow_work_cull_timer); | ||
613 | del_timer_sync(&slow_work_oom_timer); | ||
612 | wake_up_all(&slow_work_thread_wq); | 614 | wake_up_all(&slow_work_thread_wq); |
613 | wait_for_completion(&slow_work_last_thread_exited); | 615 | wait_for_completion(&slow_work_last_thread_exited); |
614 | printk(KERN_NOTICE "Slow work thread pool:" | 616 | printk(KERN_NOTICE "Slow work thread pool:" |
615 | " Shut down complete\n"); | 617 | " Shut down complete\n"); |
616 | } | 618 | } |
617 | 619 | ||
618 | del_timer_sync(&slow_work_cull_timer); | ||
619 | |||
620 | mutex_unlock(&slow_work_user_lock); | 620 | mutex_unlock(&slow_work_user_lock); |
621 | } | 621 | } |
622 | EXPORT_SYMBOL(slow_work_unregister_user); | 622 | EXPORT_SYMBOL(slow_work_unregister_user); |