diff options
Diffstat (limited to 'init/initramfs.c')
-rw-r--r-- | init/initramfs.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/init/initramfs.c b/init/initramfs.c index 80cd713f6cc5..4c00edc59689 100644 --- a/init/initramfs.c +++ b/init/initramfs.c | |||
@@ -310,7 +310,8 @@ static int __init do_name(void) | |||
310 | if (wfd >= 0) { | 310 | if (wfd >= 0) { |
311 | sys_fchown(wfd, uid, gid); | 311 | sys_fchown(wfd, uid, gid); |
312 | sys_fchmod(wfd, mode); | 312 | sys_fchmod(wfd, mode); |
313 | sys_ftruncate(wfd, body_len); | 313 | if (body_len) |
314 | sys_ftruncate(wfd, body_len); | ||
314 | vcollected = kstrdup(collected, GFP_KERNEL); | 315 | vcollected = kstrdup(collected, GFP_KERNEL); |
315 | state = CopyFile; | 316 | state = CopyFile; |
316 | } | 317 | } |
@@ -515,6 +516,7 @@ skip: | |||
515 | initrd_end = 0; | 516 | initrd_end = 0; |
516 | } | 517 | } |
517 | 518 | ||
519 | #ifdef CONFIG_BLK_DEV_RAM | ||
518 | #define BUF_SIZE 1024 | 520 | #define BUF_SIZE 1024 |
519 | static void __init clean_rootfs(void) | 521 | static void __init clean_rootfs(void) |
520 | { | 522 | { |
@@ -561,6 +563,7 @@ static void __init clean_rootfs(void) | |||
561 | sys_close(fd); | 563 | sys_close(fd); |
562 | kfree(buf); | 564 | kfree(buf); |
563 | } | 565 | } |
566 | #endif | ||
564 | 567 | ||
565 | static int __init populate_rootfs(void) | 568 | static int __init populate_rootfs(void) |
566 | { | 569 | { |
@@ -571,11 +574,10 @@ static int __init populate_rootfs(void) | |||
571 | if (initrd_start) { | 574 | if (initrd_start) { |
572 | #ifdef CONFIG_BLK_DEV_RAM | 575 | #ifdef CONFIG_BLK_DEV_RAM |
573 | int fd; | 576 | int fd; |
574 | printk(KERN_INFO "checking if image is initramfs...\n"); | 577 | printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n"); |
575 | err = unpack_to_rootfs((char *)initrd_start, | 578 | err = unpack_to_rootfs((char *)initrd_start, |
576 | initrd_end - initrd_start); | 579 | initrd_end - initrd_start); |
577 | if (!err) { | 580 | if (!err) { |
578 | printk(KERN_INFO "rootfs image is initramfs; unpacking...\n"); | ||
579 | free_initrd(); | 581 | free_initrd(); |
580 | return 0; | 582 | return 0; |
581 | } else { | 583 | } else { |
@@ -593,15 +595,11 @@ static int __init populate_rootfs(void) | |||
593 | free_initrd(); | 595 | free_initrd(); |
594 | } | 596 | } |
595 | #else | 597 | #else |
596 | printk(KERN_INFO "Unpacking initramfs..."); | 598 | printk(KERN_INFO "Unpacking initramfs...\n"); |
597 | err = unpack_to_rootfs((char *)initrd_start, | 599 | err = unpack_to_rootfs((char *)initrd_start, |
598 | initrd_end - initrd_start); | 600 | initrd_end - initrd_start); |
599 | if (err) { | 601 | if (err) |
600 | printk(" failed!\n"); | 602 | printk(KERN_EMERG "Initramfs unpacking failed: %s\n", err); |
601 | printk(KERN_EMERG "%s\n", err); | ||
602 | } else { | ||
603 | printk(" done\n"); | ||
604 | } | ||
605 | free_initrd(); | 603 | free_initrd(); |
606 | #endif | 604 | #endif |
607 | } | 605 | } |