diff options
Diffstat (limited to 'arch/x86/entry/entry_32.S')
-rw-r--r-- | arch/x86/entry/entry_32.S | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index 983e5d3a0d27..0b56666e6039 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S | |||
@@ -1153,3 +1153,14 @@ ENTRY(async_page_fault) | |||
1153 | jmp error_code | 1153 | jmp error_code |
1154 | END(async_page_fault) | 1154 | END(async_page_fault) |
1155 | #endif | 1155 | #endif |
1156 | |||
1157 | ENTRY(rewind_stack_do_exit) | ||
1158 | /* Prevent any naive code from trying to unwind to our caller. */ | ||
1159 | xorl %ebp, %ebp | ||
1160 | |||
1161 | movl PER_CPU_VAR(cpu_current_top_of_stack), %esi | ||
1162 | leal -TOP_OF_KERNEL_STACK_PADDING-PTREGS_SIZE(%esi), %esp | ||
1163 | |||
1164 | call do_exit | ||
1165 | 1: jmp 1b | ||
1166 | END(rewind_stack_do_exit) | ||