80 lines
1.9 KiB
Diff
80 lines
1.9 KiB
Diff
Index: b/suspend.c
|
|
===================================================================
|
|
--- a/suspend.c
|
|
+++ b/suspend.c
|
|
@@ -1772,11 +1772,10 @@ int suspend_system(int snapshot_fd, int
|
|
if (error)
|
|
goto Shutdown;
|
|
reset_signature(resume_fd);
|
|
free_swap_pages(snapshot_fd);
|
|
free_snapshot(snapshot_fd);
|
|
- s2ram_resume();
|
|
goto Unfreeze;
|
|
}
|
|
Shutdown:
|
|
#endif
|
|
close(resume_fd);
|
|
@@ -2268,11 +2267,11 @@ int main(int argc, char *argv[])
|
|
struct stat stat_buf;
|
|
int resume_fd, snapshot_fd, vt_fd, orig_vc = -1, suspend_vc = -1;
|
|
int test_fd = -1;
|
|
dev_t resume_dev;
|
|
int orig_loglevel, orig_swappiness, ret;
|
|
- struct rlimit rlim;
|
|
+ struct rlimit rlim, rlim_saved;
|
|
static char chroot_path[MAX_STR_LEN];
|
|
|
|
my_name = basename(argv[0]);
|
|
|
|
/* Make sure the 0, 1, 2 descriptors are open before opening the
|
|
@@ -2500,19 +2499,19 @@ int main(int argc, char *argv[])
|
|
goto Restore_console;
|
|
}
|
|
|
|
splash.progress(5);
|
|
|
|
+#ifdef CONFIG_ENCRYPT
|
|
+ if (do_encrypt && ! use_RSA)
|
|
+ splash.read_password(password, 1);
|
|
+#endif
|
|
#ifdef CONFIG_BOTH
|
|
/* If s2ram_hacks returns != 0, better not try to suspend to RAM */
|
|
if (s2ram)
|
|
s2ram = !s2ram_hacks();
|
|
#endif
|
|
-#ifdef CONFIG_ENCRYPT
|
|
- if (do_encrypt && ! use_RSA)
|
|
- splash.read_password(password, 1);
|
|
-#endif
|
|
|
|
open_printk();
|
|
orig_loglevel = get_kernel_console_loglevel();
|
|
set_kernel_console_loglevel(suspend_loglevel);
|
|
|
|
@@ -2522,18 +2521,25 @@ int main(int argc, char *argv[])
|
|
|
|
sync();
|
|
|
|
splash.progress(10);
|
|
|
|
+ getrlimit(RLIMIT_NOFILE, &rlim_saved);
|
|
rlim.rlim_cur = 0;
|
|
rlim.rlim_max = 0;
|
|
setrlimit(RLIMIT_NOFILE, &rlim);
|
|
setrlimit(RLIMIT_NPROC, &rlim);
|
|
setrlimit(RLIMIT_CORE, &rlim);
|
|
|
|
ret = suspend_system(snapshot_fd, resume_fd, test_fd);
|
|
|
|
+ setrlimit(RLIMIT_NOFILE, &rlim_saved);
|
|
+#ifdef CONFIG_BOTH
|
|
+ if (s2ram)
|
|
+ s2ram_resume();
|
|
+#endif
|
|
+
|
|
if (orig_loglevel >= 0)
|
|
set_kernel_console_loglevel(orig_loglevel);
|
|
|
|
close_printk();
|
|
|