提交 68426cc3 编写于 作者: P Peter Zijlstra 提交者: Zheng Zengkai

x86/xen: Rename SYS* entry points

stable inclusion
from stable-v5.10.133
commit f728eff26339d85825e588d461f0e55267bc6c3f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5PTAS
CVE: CVE-2022-29900,CVE-2022-23816,CVE-2022-29901

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f728eff26339d85825e588d461f0e55267bc6c3f

--------------------------------

commit b75b7f8e upstream.

Native SYS{CALL,ENTER} entry points are called
entry_SYS{CALL,ENTER}_{64,compat}, make sure the Xen versions are
named consistently.
Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: NBorislav Petkov <bp@suse.de>
Reviewed-by: NJosh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: NBorislav Petkov <bp@suse.de>
Signed-off-by: NThadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: NBen Hutchings <ben@decadent.org.uk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NLin Yujun <linyujun809@huawei.com>
Reviewed-by: NZhang Jianhua <chris.zjh@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 51420f9f
...@@ -922,7 +922,7 @@ void xen_enable_sysenter(void) ...@@ -922,7 +922,7 @@ void xen_enable_sysenter(void)
if (!boot_cpu_has(sysenter_feature)) if (!boot_cpu_has(sysenter_feature))
return; return;
ret = register_callback(CALLBACKTYPE_sysenter, xen_sysenter_target); ret = register_callback(CALLBACKTYPE_sysenter, xen_entry_SYSENTER_compat);
if(ret != 0) if(ret != 0)
setup_clear_cpu_cap(sysenter_feature); setup_clear_cpu_cap(sysenter_feature);
} }
...@@ -931,7 +931,7 @@ void xen_enable_syscall(void) ...@@ -931,7 +931,7 @@ void xen_enable_syscall(void)
{ {
int ret; int ret;
ret = register_callback(CALLBACKTYPE_syscall, xen_syscall_target); ret = register_callback(CALLBACKTYPE_syscall, xen_entry_SYSCALL_64);
if (ret != 0) { if (ret != 0) {
printk(KERN_ERR "Failed to set syscall callback: %d\n", ret); printk(KERN_ERR "Failed to set syscall callback: %d\n", ret);
/* Pretty fatal; 64-bit userspace has no other /* Pretty fatal; 64-bit userspace has no other
...@@ -940,7 +940,7 @@ void xen_enable_syscall(void) ...@@ -940,7 +940,7 @@ void xen_enable_syscall(void)
if (boot_cpu_has(X86_FEATURE_SYSCALL32)) { if (boot_cpu_has(X86_FEATURE_SYSCALL32)) {
ret = register_callback(CALLBACKTYPE_syscall32, ret = register_callback(CALLBACKTYPE_syscall32,
xen_syscall32_target); xen_entry_SYSCALL_compat);
if (ret != 0) if (ret != 0)
setup_clear_cpu_cap(X86_FEATURE_SYSCALL32); setup_clear_cpu_cap(X86_FEATURE_SYSCALL32);
} }
......
...@@ -276,7 +276,7 @@ SYM_CODE_END(xenpv_restore_regs_and_return_to_usermode) ...@@ -276,7 +276,7 @@ SYM_CODE_END(xenpv_restore_regs_and_return_to_usermode)
*/ */
/* Normal 64-bit system call target */ /* Normal 64-bit system call target */
SYM_CODE_START(xen_syscall_target) SYM_CODE_START(xen_entry_SYSCALL_64)
UNWIND_HINT_EMPTY UNWIND_HINT_EMPTY
popq %rcx popq %rcx
popq %r11 popq %r11
...@@ -290,12 +290,12 @@ SYM_CODE_START(xen_syscall_target) ...@@ -290,12 +290,12 @@ SYM_CODE_START(xen_syscall_target)
movq $__USER_CS, 1*8(%rsp) movq $__USER_CS, 1*8(%rsp)
jmp entry_SYSCALL_64_after_hwframe jmp entry_SYSCALL_64_after_hwframe
SYM_CODE_END(xen_syscall_target) SYM_CODE_END(xen_entry_SYSCALL_64)
#ifdef CONFIG_IA32_EMULATION #ifdef CONFIG_IA32_EMULATION
/* 32-bit compat syscall target */ /* 32-bit compat syscall target */
SYM_CODE_START(xen_syscall32_target) SYM_CODE_START(xen_entry_SYSCALL_compat)
UNWIND_HINT_EMPTY UNWIND_HINT_EMPTY
popq %rcx popq %rcx
popq %r11 popq %r11
...@@ -309,10 +309,10 @@ SYM_CODE_START(xen_syscall32_target) ...@@ -309,10 +309,10 @@ SYM_CODE_START(xen_syscall32_target)
movq $__USER32_CS, 1*8(%rsp) movq $__USER32_CS, 1*8(%rsp)
jmp entry_SYSCALL_compat_after_hwframe jmp entry_SYSCALL_compat_after_hwframe
SYM_CODE_END(xen_syscall32_target) SYM_CODE_END(xen_entry_SYSCALL_compat)
/* 32-bit compat sysenter target */ /* 32-bit compat sysenter target */
SYM_CODE_START(xen_sysenter_target) SYM_CODE_START(xen_entry_SYSENTER_compat)
UNWIND_HINT_EMPTY UNWIND_HINT_EMPTY
/* /*
* NB: Xen is polite and clears TF from EFLAGS for us. This means * NB: Xen is polite and clears TF from EFLAGS for us. This means
...@@ -330,18 +330,18 @@ SYM_CODE_START(xen_sysenter_target) ...@@ -330,18 +330,18 @@ SYM_CODE_START(xen_sysenter_target)
movq $__USER32_CS, 1*8(%rsp) movq $__USER32_CS, 1*8(%rsp)
jmp entry_SYSENTER_compat_after_hwframe jmp entry_SYSENTER_compat_after_hwframe
SYM_CODE_END(xen_sysenter_target) SYM_CODE_END(xen_entry_SYSENTER_compat)
#else /* !CONFIG_IA32_EMULATION */ #else /* !CONFIG_IA32_EMULATION */
SYM_CODE_START(xen_syscall32_target) SYM_CODE_START(xen_entry_SYSCALL_compat)
SYM_CODE_START(xen_sysenter_target) SYM_CODE_START(xen_entry_SYSENTER_compat)
UNWIND_HINT_EMPTY UNWIND_HINT_EMPTY
lea 16(%rsp), %rsp /* strip %rcx, %r11 */ lea 16(%rsp), %rsp /* strip %rcx, %r11 */
mov $-ENOSYS, %rax mov $-ENOSYS, %rax
pushq $0 pushq $0
jmp hypercall_iret jmp hypercall_iret
SYM_CODE_END(xen_sysenter_target) SYM_CODE_END(xen_entry_SYSENTER_compat)
SYM_CODE_END(xen_syscall32_target) SYM_CODE_END(xen_entry_SYSCALL_compat)
#endif /* CONFIG_IA32_EMULATION */ #endif /* CONFIG_IA32_EMULATION */
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
/* These are code, but not functions. Defined in entry.S */ /* These are code, but not functions. Defined in entry.S */
extern const char xen_failsafe_callback[]; extern const char xen_failsafe_callback[];
void xen_sysenter_target(void); void xen_entry_SYSENTER_compat(void);
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
void xen_syscall_target(void); void xen_entry_SYSCALL_64(void);
void xen_syscall32_target(void); void xen_entry_SYSCALL_compat(void);
#endif #endif
extern void *xen_initial_gdt; extern void *xen_initial_gdt;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册