aboutsummaryrefslogtreecommitdiffstats
path: root/init/initramfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/initramfs.c')
-rw-r--r--init/initramfs.c18
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
519static void __init clean_rootfs(void) 521static 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
565static int __init populate_rootfs(void) 568static 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 }