diff options
Diffstat (limited to 'init/initramfs.c')
| -rw-r--r-- | init/initramfs.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/init/initramfs.c b/init/initramfs.c index 84c6bf11130..a67ef9dbda9 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -592,7 +592,7 @@ static int __init populate_rootfs(void)  			initrd_end - initrd_start);  		if (!err) {  			free_initrd(); -			return 0; +			goto done;  		} else {  			clean_rootfs();  			unpack_to_rootfs(__initramfs_start, __initramfs_size); @@ -607,6 +607,7 @@ static int __init populate_rootfs(void)  			sys_close(fd);  			free_initrd();  		} +	done:  #else  		printk(KERN_INFO "Unpacking initramfs...\n");  		err = unpack_to_rootfs((char *)initrd_start, @@ -615,6 +616,11 @@ static int __init populate_rootfs(void)  			printk(KERN_EMERG "Initramfs unpacking failed: %s\n", err);  		free_initrd();  #endif +		/* +		 * Try loading default modules from initramfs.  This gives +		 * us a chance to load before device_initcalls. +		 */ +		load_default_modules();  	}  	return 0;  }  |