Commit b0d8db08 authored by Huang Ying's avatar Huang Ying Committed by Greg Kroah-Hartman

kexec, x86: Fix incorrect jump back address if not preserving context

commit 050438ed upstream.

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: default avatarYin Kangkai <kangkai.yin@intel.com>
Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Link: http://lkml.kernel.org/r/1310607277-25029-1-git-send-email-ying.huang@intel.comSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 40a3e996
...@@ -97,6 +97,8 @@ relocate_kernel: ...@@ -97,6 +97,8 @@ relocate_kernel:
ret ret
identity_mapped: identity_mapped:
/* set return address to 0 if not preserving context */
pushl $0
/* store the start address on the stack */ /* store the start address on the stack */
pushl %edx pushl %edx
......
...@@ -100,6 +100,8 @@ relocate_kernel: ...@@ -100,6 +100,8 @@ relocate_kernel:
ret ret
identity_mapped: identity_mapped:
/* set return address to 0 if not preserving context */
pushq $0
/* store the start address on the stack */ /* store the start address on the stack */
pushq %rdx pushq %rdx
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment