Commit 76f5df43ca ('x86/asm/entry/64: Always allocate a complete "struct pt_regs" on the kernel stack') deleted PARTIAL_FRAME without considering that while a full frame is now being allocated, not all registers get always saved into it. Instead of restoring that macro, simply make DEFAULT_FRAME capable of expressing both.
Signed-off-by: Jan Beulich <jbeul...@suse.com> Cc: Denys Vlasenko <dvlas...@redhat.com> Cc: Andy Lutomirski <l...@amacapital.net> --- arch/x86/kernel/entry_64.S | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) --- 4.1-rc5/arch/x86/kernel/entry_64.S +++ 4.1-rc5-x86_64-unwind-info/arch/x86/kernel/entry_64.S @@ -148,7 +148,7 @@ ENDPROC(native_usergs_sysret64) /* * frame that enables passing a complete pt_regs to a C function. */ - .macro DEFAULT_FRAME start=1 offset=0 + .macro DEFAULT_FRAME start=1 offset=0 extra=1 XCPT_FRAME \start, ORIG_RAX+\offset CFI_REL_OFFSET rdi, RDI+\offset CFI_REL_OFFSET rsi, RSI+\offset @@ -159,12 +159,14 @@ ENDPROC(native_usergs_sysret64) CFI_REL_OFFSET r9, R9+\offset CFI_REL_OFFSET r10, R10+\offset CFI_REL_OFFSET r11, R11+\offset + .if \extra CFI_REL_OFFSET rbx, RBX+\offset CFI_REL_OFFSET rbp, RBP+\offset CFI_REL_OFFSET r12, R12+\offset CFI_REL_OFFSET r13, R13+\offset CFI_REL_OFFSET r14, R14+\offset CFI_REL_OFFSET r15, R15+\offset + .endif .endm /* @@ -491,7 +493,7 @@ END(system_call) .macro FORK_LIKE func ENTRY(stub_\func) CFI_STARTPROC - DEFAULT_FRAME 0, 8 /* offset 8: return address */ + DEFAULT_FRAME 0, 8, 0 /* offset 8: return address */ SAVE_EXTRA_REGS 8 jmp sys_\func CFI_ENDPROC @@ -504,7 +506,7 @@ END(stub_\func) ENTRY(stub_execve) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 call sys_execve return_from_execve: testl %eax, %eax @@ -527,7 +529,7 @@ END(stub_execve) .align 8 GLOBAL(stub_execveat) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 call sys_execveat jmp return_from_execve CFI_ENDPROC @@ -537,7 +539,7 @@ END(stub_execveat) .align 8 GLOBAL(stub_x32_execve) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 call compat_sys_execve jmp return_from_execve CFI_ENDPROC @@ -545,7 +547,7 @@ END(stub_x32_execve) .align 8 GLOBAL(stub_x32_execveat) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 call compat_sys_execveat jmp return_from_execve CFI_ENDPROC @@ -575,7 +577,7 @@ END(stub32_execveat) */ ENTRY(stub_rt_sigreturn) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 /* * SAVE_EXTRA_REGS result is not normally needed: * sigreturn overwrites all pt_regs->GPREGS. @@ -597,7 +599,7 @@ END(stub_rt_sigreturn) #ifdef CONFIG_X86_X32_ABI ENTRY(stub_x32_rt_sigreturn) CFI_STARTPROC - DEFAULT_FRAME 0, 8 + DEFAULT_FRAME 0, 8, 0 SAVE_EXTRA_REGS 8 call sys32_x32_rt_sigreturn jmp return_from_stub -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/