diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/initramfs.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/init/initramfs.c b/init/initramfs.c index 4749e1115eef..c322e1099f43 100644 --- a/init/initramfs.c +++ b/init/initramfs.c | |||
@@ -612,13 +612,12 @@ static int __init populate_rootfs(void) | |||
612 | printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n"); | 612 | printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n"); |
613 | err = unpack_to_rootfs((char *)initrd_start, | 613 | err = unpack_to_rootfs((char *)initrd_start, |
614 | initrd_end - initrd_start); | 614 | initrd_end - initrd_start); |
615 | if (!err) { | 615 | if (!err) |
616 | free_initrd(); | ||
617 | goto done; | 616 | goto done; |
618 | } else { | 617 | |
619 | clean_rootfs(); | 618 | clean_rootfs(); |
620 | unpack_to_rootfs(__initramfs_start, __initramfs_size); | 619 | unpack_to_rootfs(__initramfs_start, __initramfs_size); |
621 | } | 620 | |
622 | printk(KERN_INFO "rootfs image is not initramfs (%s)" | 621 | printk(KERN_INFO "rootfs image is not initramfs (%s)" |
623 | "; looks like an initrd\n", err); | 622 | "; looks like an initrd\n", err); |
624 | fd = ksys_open("/initrd.image", | 623 | fd = ksys_open("/initrd.image", |
@@ -632,7 +631,6 @@ static int __init populate_rootfs(void) | |||
632 | written, initrd_end - initrd_start); | 631 | written, initrd_end - initrd_start); |
633 | 632 | ||
634 | ksys_close(fd); | 633 | ksys_close(fd); |
635 | free_initrd(); | ||
636 | } | 634 | } |
637 | done: | 635 | done: |
638 | /* empty statement */; | 636 | /* empty statement */; |
@@ -642,9 +640,9 @@ static int __init populate_rootfs(void) | |||
642 | initrd_end - initrd_start); | 640 | initrd_end - initrd_start); |
643 | if (err) | 641 | if (err) |
644 | printk(KERN_EMERG "Initramfs unpacking failed: %s\n", err); | 642 | printk(KERN_EMERG "Initramfs unpacking failed: %s\n", err); |
645 | free_initrd(); | ||
646 | #endif | 643 | #endif |
647 | } | 644 | } |
645 | free_initrd(); | ||
648 | flush_delayed_fput(); | 646 | flush_delayed_fput(); |
649 | return 0; | 647 | return 0; |
650 | } | 648 | } |