[PATCH] Fix failure to resume from initrds.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: LKML <linux-kernel@...>, Linus Torvalds <torvalds@...>, Rafael Wysocki <rjw@...>
Date: Monday, September 10, 2007 - 11:54 pm

Hi all.

Commit 831441862956fffa17b9801db37e6ea1650b0f69 (Freezer: make kernel threads
nonfreezable by default) breaks freezing when attempting to resume from an
initrd, because the init (which is freezeable) spins while waiting for another
thread to run /linuxrc, but doesn't check whether it has been told to enter
the refrigerator. The original patch replaced a call to try_to_freeze() with a
call to yield(). I believe a simple reversion is wrong because
if !CONFIG_PM_SLEEP, try_to_freeze() is a noop. It should still yield.

Signed-off-by: Nigel Cunningham <nigel@nigel.suspend2.net>

 do_mounts_initrd.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff -ruNp 952-fix-initrd-resume.patch-old/init/do_mounts_initrd.c 952-fix-initrd-resume.patch-new/init/do_mounts_initrd.c
--- 952-fix-initrd-resume.patch-old/init/do_mounts_initrd.c	2007-09-11 13:43:31.000000000 +1000
+++ 952-fix-initrd-resume.patch-new/init/do_mounts_initrd.c	2007-09-11 13:19:50.000000000 +1000
@@ -58,8 +58,10 @@ static void __init handle_initrd(void)
 
 	pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);
 	if (pid > 0)
-		while (pid != sys_wait4(-1, NULL, 0, NULL))
+		while (pid != sys_wait4(-1, NULL, 0, NULL)) {
 			yield();
+			try_to_freeze();
+		}
 
 	if (!resume_attempted)
 		printk(KERN_ERR "Suspend2: No attempt was made to resume from "

-- 
See http://www.tuxonice.net for Howtos, FAQs, mailing
lists, wiki and bugzilla info.
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] Fix failure to resume from initrds., Nigel Cunningham, (Mon Sep 10, 11:54 pm)
Re: [PATCH] Fix failure to resume from initrds., Rafael J. Wysocki, (Tue Sep 11, 7:04 am)
Re: [PATCH] Fix failure to resume from initrds., Nigel Cunningham, (Tue Sep 11, 7:27 am)
Re: [PATCH] Fix failure to resume from initrds., Rafael J. Wysocki, (Tue Sep 11, 7:55 am)
Re: [PATCH] Fix failure to resume from initrds., Nigel Cunningham, (Tue Sep 11, 9:01 am)
Re: [PATCH] Fix failure to resume from initrds., Rafael J. Wysocki, (Tue Sep 11, 9:12 am)
Re: [PATCH] Fix failure to resume from initrds., Rafael J. Wysocki, (Tue Sep 11, 9:23 am)
Re: [PATCH] Fix failure to resume from initrds., Linus Torvalds, (Tue Sep 11, 10:39 am)
Re: [PATCH] Fix failure to resume from initrds., Pavel Machek, (Tue Sep 11, 12:27 pm)
Re: [PATCH] Fix failure to resume from initrds., Nigel Cunningham, (Tue Sep 11, 9:41 am)
Re: [PATCH] Fix failure to resume from initrds., Rafael J. Wysocki, (Tue Sep 11, 3:25 pm)