|
@@ -483,7 +483,8 @@ static int __init retain_initrd_param(char *str)
|
|
|
}
|
|
|
__setup("retain_initrd", retain_initrd_param);
|
|
|
|
|
|
-extern char __initramfs_start[], __initramfs_end[];
|
|
|
+extern char __initramfs_start[];
|
|
|
+extern unsigned long __initramfs_size;
|
|
|
#include <linux/initrd.h>
|
|
|
#include <linux/kexec.h>
|
|
|
|
|
@@ -570,8 +571,7 @@ static void __init clean_rootfs(void)
|
|
|
|
|
|
static int __init populate_rootfs(void)
|
|
|
{
|
|
|
- char *err = unpack_to_rootfs(__initramfs_start,
|
|
|
- __initramfs_end - __initramfs_start);
|
|
|
+ char *err = unpack_to_rootfs(__initramfs_start, __initramfs_size);
|
|
|
if (err)
|
|
|
panic(err); /* Failed to decompress INTERNAL initramfs */
|
|
|
if (initrd_start) {
|
|
@@ -585,8 +585,7 @@ static int __init populate_rootfs(void)
|
|
|
return 0;
|
|
|
} else {
|
|
|
clean_rootfs();
|
|
|
- unpack_to_rootfs(__initramfs_start,
|
|
|
- __initramfs_end - __initramfs_start);
|
|
|
+ unpack_to_rootfs(__initramfs_start, __initramfs_size);
|
|
|
}
|
|
|
printk(KERN_INFO "rootfs image is not initramfs (%s)"
|
|
|
"; looks like an initrd\n", err);
|