From: Pavel Machek fix_processor_context was calling functions marked __init on x86-64; bad idea. Thanks to Rafael for keeping notifying me about this bug. Signed-off-by: Andrew Morton --- 25-akpm/arch/x86_64/ia32/syscall32.c | 3 ++- 25-akpm/arch/x86_64/kernel/setup64.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff -puN arch/x86_64/ia32/syscall32.c~fix-random-crashes-in-x86-64-swsusp arch/x86_64/ia32/syscall32.c --- 25/arch/x86_64/ia32/syscall32.c~fix-random-crashes-in-x86-64-swsusp Wed Oct 6 16:30:07 2004 +++ 25-akpm/arch/x86_64/ia32/syscall32.c Wed Oct 6 16:30:07 2004 @@ -88,7 +88,8 @@ static int __init init_syscall32(void) __initcall(init_syscall32); -void __init syscall32_cpu_init(void) +/* May not be __init: called during resume */ +void syscall32_cpu_init(void) { if (use_sysenter < 0) use_sysenter = (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL); diff -puN arch/x86_64/kernel/setup64.c~fix-random-crashes-in-x86-64-swsusp arch/x86_64/kernel/setup64.c --- 25/arch/x86_64/kernel/setup64.c~fix-random-crashes-in-x86-64-swsusp Wed Oct 6 16:30:07 2004 +++ 25-akpm/arch/x86_64/kernel/setup64.c Wed Oct 6 16:30:07 2004 @@ -195,7 +195,8 @@ void pda_init(int cpu) char boot_exception_stacks[N_EXCEPTION_STACKS * EXCEPTION_STKSZ] __attribute__((section(".bss.page_aligned"))); -void __init syscall_init(void) +/* May not be marked __init: used by software suspend */ +void syscall_init(void) { /* * LSTAR and STAR live in a bit strange symbiosis. _