]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] swsusp: do not panic on bad signature with noresume
authorRusty Russell <rusty@rustcorp.com.au>
Sun, 9 Feb 2003 11:00:36 +0000 (03:00 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 9 Feb 2003 11:00:36 +0000 (03:00 -0800)
From:  Pavel Machek <pavel@ucw.cz>

  This patch makes kernel ignore bad signature on suspend device when
  "noresume" is given, and cleans things up a little bit. Please apply,

kernel/suspend.c

index 8ed7bde5aa18caa27127875df03fe4c70ed4a9d9..392b1d4ef16c558444c7641d84e508d8278ca01d 100644 (file)
@@ -1084,12 +1084,12 @@ static int __read_suspend_image(struct block_device *bdev, union diskpage *cur,
        else if (!memcmp("S2",cur->swh.magic.magic,2))
                memcpy(cur->swh.magic.magic,"SWAPSPACE2",10);
        else {
+               if (noresume)
+                       return -EINVAL;
                panic("%sUnable to find suspended-data signature (%.10s - misspelled?\n", 
                        name_resume, cur->swh.magic.magic);
-               /* We want to panic even with noresume -- we certainly don't want to add
-                  out signature into your ext2 filesystem ;-) */
        }
-       if(noresume) {
+       if (noresume) {
                /* We don't do a sanity check here: we want to restore the swap
                   whatever version of kernel made the suspend image;
                   We need to write swap, but swap is *not* enabled so
@@ -1207,11 +1207,11 @@ void software_resume(void)
        /* We enable the possibility of machine suspend */
        software_suspend_enabled = 1;
 #endif
-       if(!resume_status)
+       if (!resume_status)
                return;
 
        printk( "%s", name_resume );
-       if(resume_status == NORESUME) {
+       if (resume_status == NORESUME) {
                if(resume_file[0])
                        read_suspend_image(resume_file, 1);
                printk( "disabled\n" );
@@ -1240,7 +1240,7 @@ read_failure:
 
 static int __init resume_setup(char *str)
 {
-       if(resume_status)
+       if (resume_status == NORESUME)
                return 1;
 
        strncpy( resume_file, str, 255 );
@@ -1249,16 +1249,13 @@ static int __init resume_setup(char *str)
        return 1;
 }
 
-static int __init software_noresume(char *str)
+static int __init noresume_setup(char *str)
 {
-       if(!resume_status)
-               printk(KERN_WARNING "noresume option lacks a resume= option\n");
        resume_status = NORESUME;
-       
        return 1;
 }
 
-__setup("noresume", software_noresume);
+__setup("noresume", noresume_setup);
 __setup("resume=", resume_setup);
 
 EXPORT_SYMBOL(software_suspend);