811/* This is a non __init function. Force it to be noinline otherwise gcc 812 * makes it inline to init() and it becomes part of init.text section 813 */ 814static noinline int init_post(void) 815 __releases(kernel_lock) 816{ 817 /* need to finish all async __init code before freeing the memory */ 818 async_synchronize_full(); 819 free_initmem(); 820 unlock_kernel(); 821 mark_rodata_ro(); 822 system_state = SYSTEM_RUNNING; 823 numa_default_policy(); 824 825 826 current->signal->flags |= SIGNAL_UNKILLABLE; 827 828 if (ramdisk_execute_command) { 829 run_init_process(ramdisk_execute_command); 830 printk(KERN_WARNING "Failed to execute %s/n", 831 ramdisk_execute_command); 832 } 833 834 /* 835 * We try each of these until one succeeds. 836 * 837 * The Bourne shell can be used instead of init if we are 838 * trying to recover a really broken machine. 839 */ 840 if (execute_command) { 841 run_init_process(execute_command); 842 printk(KERN_WARNING "Failed to execute %s. Attempting " 843 "defaults.../n", execute_command); 844 } 845 run_init_process("/sbin/init"); 846 run_init_process("/etc/init"); 847 run_init_process("/bin/init"); 848 run_init_process("/bin/sh"); 849 850 panic("No init found. Try passing init= option to kernel. " 851 "See Linux Documentation/init.txt for guidance."); 852} |