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" kernel macro and a valid task_struct resp. thread_info struct. Give those functions a valid stack by moving uml_postsetup() in the init_thread stack. This moves enables a panic() call in this early code to generate a valid stacktrace, instead of crashing. E.g. when an UML kernel is started with an initrd but too few physical memory the panic() call get's actually processed. Signed-off-by: Thomas Meyer <thomas@m3y3r.de> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:

committato da
Richard Weinberger

parent
04a418495e
commit
33bbc30654
@@ -226,6 +226,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);
|
||||
@@ -326,11 +336,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();
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user