kexec, x86: Fix incorrect jump back address if not preserving context
In kexec jump support, jump back address passed to the kexeced kernel via function calling ABI, that is, the function call return address is the jump back entry. Furthermore, jump back entry == 0 should be used to signal that the jump back or preserve context is not enabled in the original kernel. But in the current implementation the stack position used for function call return address is not cleared context preservation is disabled. The patch fixes this bug. Reported-and-tested-by: Yin Kangkai <kangkai.yin@intel.com> Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Vivek Goyal <vgoyal@redhat.com> Cc: <stable@kernel.org> Link: http://lkml.kernel.org/r/1310607277-25029-1-git-send-email-ying.huang@intel.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
cf6ace16a3
Коммит
050438ed5a
|
@ -97,6 +97,8 @@ relocate_kernel:
|
|||
ret
|
||||
|
||||
identity_mapped:
|
||||
/* set return address to 0 if not preserving context */
|
||||
pushl $0
|
||||
/* store the start address on the stack */
|
||||
pushl %edx
|
||||
|
||||
|
|
|
@ -100,6 +100,8 @@ relocate_kernel:
|
|||
ret
|
||||
|
||||
identity_mapped:
|
||||
/* set return address to 0 if not preserving context */
|
||||
pushq $0
|
||||
/* store the start address on the stack */
|
||||
pushq %rdx
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче