aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org> 2021-01-29 13:30:09 -0800
committerGravatar Linus Torvalds <torvalds@linux-foundation.org> 2021-01-29 13:30:09 -0800
commit32b0c410cda19df9f0e88edcae126d0a660cf8b9 (patch)
tree3c1bf68ed97bd109250f27fc369199c1d26dec18
parentMerge tag 'acpi-5.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/ra... (diff)
parentPM: hibernate: flush swap writer after marking (diff)
downloadlinux-32b0c410cda19df9f0e88edcae126d0a660cf8b9.tar.gz
linux-32b0c410cda19df9f0e88edcae126d0a660cf8b9.tar.bz2
linux-32b0c410cda19df9f0e88edcae126d0a660cf8b9.zip
Merge tag 'pm-5.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management fixes from Rafael Wysocki: "These fix a deadlock in the 'kexec jump' code and address a possible hibernation image creation issue. Specifics: - Fix a deadlock caused by attempting to acquire the same mutex twice in a row in the "kexec jump" code (Baoquan He) - Modify the hibernation image saving code to flush the unwritten data to the swap storage later so as to avoid failing to write the image signature which is possible in some cases (Laurent Badel)" * tag 'pm-5.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: PM: hibernate: flush swap writer after marking kernel: kexec: remove the lock operation of system_transition_mutex
-rw-r--r--kernel/kexec_core.c2
-rw-r--r--kernel/power/swap.c2
2 files changed, 1 insertions, 3 deletions
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 4f8efc278aa7..aa919585c24b 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -1134,7 +1134,6 @@ int kernel_kexec(void)
#ifdef CONFIG_KEXEC_JUMP
if (kexec_image->preserve_context) {
- lock_system_sleep();
pm_prepare_console();
error = freeze_processes();
if (error) {
@@ -1197,7 +1196,6 @@ int kernel_kexec(void)
thaw_processes();
Restore_console:
pm_restore_console();
- unlock_system_sleep();
}
#endif
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index c73f2e295167..72e33054a2e1 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -497,10 +497,10 @@ static int swap_writer_finish(struct swap_map_handle *handle,
unsigned int flags, int error)
{
if (!error) {
- flush_swap_writer(handle);
pr_info("S");
error = mark_swapfiles(handle, flags);
pr_cont("|\n");
+ flush_swap_writer(handle);
}
if (error)