um: Move uml_postsetup in the init_thread stack
PATCH v3 1/3 um: Move uml_postsetup in the init_thread stack
atomic_notifier_chain_register() and uml_postsetup() do call kernel code that rely on the current macro and a valid task_struct resp. thread_info struct.
Signed-off-by Thomas Meyer <[email protected]>
---
arch/um/include/shared/as-layout.h +1 -0
@@ -56,6 +56,7 @@ extern unsigned long brk_start;extern unsigned long host_task_size;extern int linux_main (int argc,char **argv); +extern void uml_finishsetup (void );struct siginfo ;extern void (*sig_info[])(int ,struct siginfo *si,struct uml_pt_regs *);
arch/um/kernel/um_arch.c +10 -5
@@ -247,6 +247,16 @@ static struct notifier_block panic_exit_notifier = { .priority = 0 }; +void uml_finishsetup (void ) +{ +atomic_notifier_chain_register (&panic_notifier_list, + &panic_exit_notifier); + +uml_postsetup (); + +new_thread_handler (); +} +/* Set during early boot */ unsigned long task_size;EXPORT_SYMBOL (task_size);
@@ -367,11 +377,6 @@ int __init linux_main(int argc, char **argv)printf ("Kernel virtual memory size shrunk to %lu bytes\n" , virtmem_size); -atomic_notifier_chain_register (&panic_notifier_list, - &panic_exit_notifier); - -uml_postsetup (); -stack_protections ((unsigned long ) &init_thread_info);os_flush_stdout ();
arch/um/os-Linux/skas/process.c +1 -1
@@ -674,7 +674,7 @@ int start_idle_thread(void *stack, jmp_buf *switch_buf) n =setjmp (initial_jmpbuf);switch (n) {case INIT_JMP_NEW_THREAD : - (*switch_buf)[0 ].JB_IP = (unsigned long ) new_thread_handler; + (*switch_buf)[0 ].JB_IP = (unsigned long ) uml_finishsetup; (*switch_buf)[0 ].JB_SP = (unsigned long ) stack +UM_THREAD_SIZE -sizeof (void *);break ;
Signature · 15 lines
1.9.3 ------------------------------------------------------------------------------ Comprehensive Server Monitoring with Site24x7. Monitor 10 servers for $9/Month. Get alerted through email, SMS, voice calls or mobile push notifications. Take corrective actions from your mobile device. http://p.sf.net/sfu/Zoho _______________________________________________ User-mode-linux-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel