simple: panic on corrupted swap
authorAlan Cox <alan@linux.intel.com>
Thu, 19 Feb 2015 23:22:10 +0000 (23:22 +0000)
committerAlan Cox <alan@linux.intel.com>
Thu, 19 Feb 2015 23:22:10 +0000 (23:22 +0000)
Kernel/simple.c

index 915c301..70c6da9 100644 (file)
@@ -62,28 +62,24 @@ int swapout(ptptr p)
 
        swapproc = p;
 
-       if (page) {
+       if (!page)
+               panic("%x: process already swapped!\n", p);
 #ifdef DEBUG
-               kprintf("Swapping out %x (%d)\n", p, p->p_page);
+       kprintf("Swapping out %x (%d)\n", p, p->p_page);
 #endif
-               /* Are we out of swap ? */
-               map = swapmap_alloc();
-               if (map == 0)
-                       return ENOMEM;
-                flush_cache(p);
-               blk = map * SWAP_SIZE;
-               /* Write the app (and possibly the uarea etc..) to disk */
-               swapwrite(SWAPDEV, blk, SWAPTOP - SWAPBASE,
-                         SWAPBASE);
-               p->p_page = 0;
-               p->p_page2 = map;
+       /* Are we out of swap ? */
+       map = swapmap_alloc();
+       if (map == 0)
+               return ENOMEM;
+       flush_cache(p);
+       blk = map * SWAP_SIZE;
+       /* Write the app (and possibly the uarea etc..) to disk */
+       swapwrite(SWAPDEV, blk, SWAPTOP - SWAPBASE,
+                 SWAPBASE);
+       p->p_page = 0;
+       p->p_page2 = map;
 #ifdef DEBUG
-               kprintf("%x: swapout done %d\n", p, p->p_page);
-#endif
-       }
-#ifdef DEBUG
-       else
-               kprintf("%x: process already swapped!\n", p);
+       kprintf("%x: swapout done %d\n", p, p->p_page);
 #endif
        return 0;
 }