[tip:core/percpu] init: make initrd/initramfs decompression failure a KERN_EMERG event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  73310a169aebe257efdd35a763cce1c7658f40c9
Gitweb:     http://git.kernel.org/tip/73310a169aebe257efdd35a763cce1c7658f40c9
Author:     "H. Peter Anvin" <hpa@xxxxxxxxxxxxxxx>
AuthorDate: Wed, 14 Jan 2009 11:28:35 -0800
Commit:     H. Peter Anvin <hpa@xxxxxxxxxxxxxxx>
CommitDate: Wed, 14 Jan 2009 11:28:35 -0800

init: make initrd/initramfs decompression failure a KERN_EMERG event

Impact: More consistent behaviour, avoid policy in the kernel

Upgrade/downgrade initrd/initramfs decompression failure from
inconsistently a panic or a KERN_ALERT message to a KERN_EMERG event.
It is, however, possible do design a system which can recover from
this (using the kernel builtin code and/or the internal initramfs),
which means this is policy, not a technical necessity.

A good way to handle this would be to have a panic-level=X option, to
force a panic on a printk above a certain level.  That is a separate
patch, however.

Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx>


---
 init/do_mounts_rd.c |    3 ++-
 init/initramfs.c    |   11 +++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/init/do_mounts_rd.c b/init/do_mounts_rd.c
index 91d0cfc..027a402 100644
--- a/init/do_mounts_rd.c
+++ b/init/do_mounts_rd.c
@@ -83,7 +83,8 @@ identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 		printk(KERN_NOTICE "RAMDISK: %s image found at block %d\n",
 		       compress_name, start_block);
 		if (!*decompressor)
-			printk(KERN_CRIT "RAMDISK: %s decompressor not configured!\n",
+			printk(KERN_EMERG
+			       "RAMDISK: %s decompressor not configured!\n",
 			       compress_name);
 		nblocks = 0;
 		goto done;
diff --git a/init/initramfs.c b/init/initramfs.c
index 9a7290e..7dcde7e 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -528,7 +528,7 @@ static int __init populate_rootfs(void)
 	char *err = unpack_to_rootfs(__initramfs_start,
 			 __initramfs_end - __initramfs_start, 0);
 	if (err)
-		panic(err);
+		panic(err);	/* Failed to decompress INTERNAL initramfs */
 	if (initrd_start) {
 #ifdef CONFIG_BLK_DEV_RAM
 		int fd;
@@ -554,9 +554,12 @@ static int __init populate_rootfs(void)
 		printk(KERN_INFO "Unpacking initramfs...");
 		err = unpack_to_rootfs((char *)initrd_start,
 			initrd_end - initrd_start, 0);
-		if (err)
-			panic(err);
-		printk(" done\n");
+		if (err) {
+			printk(" failed!\n");
+			printk(KERN_EMERG "%s\n", err);
+		} else {
+			printk(" done\n");
+		}
 		free_initrd();
 #endif
 	}
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux