Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 418df63c authored by Jonathan Corbet's avatar Jonathan Corbet Committed by Linus Torvalds
Browse files

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: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3e241ff0
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -609,14 +609,14 @@ void slow_work_unregister_user(void)
	if (slow_work_user_count == 0) {
	if (slow_work_user_count == 0) {
		printk(KERN_NOTICE "Slow work thread pool: Shutting down\n");
		printk(KERN_NOTICE "Slow work thread pool: Shutting down\n");
		slow_work_threads_should_exit = true;
		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);
		wake_up_all(&slow_work_thread_wq);
		wait_for_completion(&slow_work_last_thread_exited);
		wait_for_completion(&slow_work_last_thread_exited);
		printk(KERN_NOTICE "Slow work thread pool:"
		printk(KERN_NOTICE "Slow work thread pool:"
		       " Shut down complete\n");
		       " Shut down complete\n");
	}
	}


	del_timer_sync(&slow_work_cull_timer);

	mutex_unlock(&slow_work_user_lock);
	mutex_unlock(&slow_work_user_lock);
}
}
EXPORT_SYMBOL(slow_work_unregister_user);
EXPORT_SYMBOL(slow_work_unregister_user);