Commit 8baabde66c60a84781c718c28fe283ed411a7bd0
Committed by
Len Brown
1 parent
2ffbb8377c
Exists in
master
and in
4 other branches
Freezer: Fix s2disk resume from initrd
Add appropriate freezer annotations to handle_initrd(), so that it's possible to resume from disk from an initrd. http://bugzilla.kernel.org/show_bug.cgi?id=9345 Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Cc: Pavel Machek <pavel@ucw.cz> Cc: Nigel Cunningham <nigel@nigel.suspend2.net> Cc: Ingo Molnar <mingo@elte.hu> Cc: Chris Friedhoff <chris@friedhoff.org> Signed-off-by: Len Brown <len.brown@intel.com>
Showing 1 changed file with 9 additions and 3 deletions Side-by-side Diff
init/do_mounts_initrd.c
... | ... | @@ -55,12 +55,18 @@ |
55 | 55 | sys_mount(".", "/", NULL, MS_MOVE, NULL); |
56 | 56 | sys_chroot("."); |
57 | 57 | |
58 | + /* | |
59 | + * In case that a resume from disk is carried out by linuxrc or one of | |
60 | + * its children, we need to tell the freezer not to wait for us. | |
61 | + */ | |
62 | + current->flags |= PF_FREEZER_SKIP; | |
63 | + | |
58 | 64 | pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD); |
59 | 65 | if (pid > 0) |
60 | - while (pid != sys_wait4(-1, NULL, 0, NULL)) { | |
61 | - try_to_freeze(); | |
66 | + while (pid != sys_wait4(-1, NULL, 0, NULL)) | |
62 | 67 | yield(); |
63 | - } | |
68 | + | |
69 | + current->flags &= ~PF_FREEZER_SKIP; | |
64 | 70 | |
65 | 71 | /* move initrd to rootfs' /old */ |
66 | 72 | sys_fchdir(old_fd); |