Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PM: prevent frozen user mode helpers from failing the freezing of tasks
At present, if a user mode helper is running while usermodehelper_pm_callback() is executed, the helper may be frozen and the completion in call_usermodehelper_exec() won't be completed until user space processes are thawed. As a result, the freezing of kernel threads may fail, which is not desirable. Prevent this from happening by introducing a counter of running user mode helpers and allowing usermodehelper_pm_callback() to succeed for action = PM_HIBERNATION_PREPARE or action = PM_SUSPEND_PREPARE only if there are no helpers running. [Namely, usermodehelper_pm_callback() waits for at most RUNNING_HELPERS_TIMEOUT for the number of running helpers to become zero and fails if that doesn't happen.] Special thanks to Uli Luckas <[email protected]>, Pavel Machek <[email protected]> and Oleg Nesterov <[email protected]> for reviewing the previous versions of this patch and for very useful comments. Signed-off-by: Rafael J. Wysocki <[email protected]> Acked-by: Uli Luckas <[email protected]> Acked-by: Nigel Cunningham <[email protected]> Acked-by: Pavel Machek <[email protected]> Cc: Oleg Nesterov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
- Loading branch information