-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x86/entry: Use generic syscall entry function
Replace the syscall entry work handling with the generic version. Provide the necessary helper inlines to handle the real architecture specific parts, e.g. ptrace. Use a temporary define for idtentry_enter_user which will be cleaned up seperately. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Kees Cook <keescook@chromium.org> Link: https://lkml.kernel.org/r/20200722220520.376213694@linutronix.de
- Loading branch information
Thomas Gleixner
committed
Jul 24, 2020
1 parent
0bf019e
commit 27d6b4d
Showing
5 changed files
with
45 additions
and
179 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
#ifndef _ASM_X86_ENTRY_COMMON_H | ||
#define _ASM_X86_ENTRY_COMMON_H | ||
|
||
/* Check that the stack and regs on entry from user mode are sane. */ | ||
static __always_inline void arch_check_user_regs(struct pt_regs *regs) | ||
{ | ||
if (IS_ENABLED(CONFIG_DEBUG_ENTRY)) { | ||
/* | ||
* Make sure that the entry code gave us a sensible EFLAGS | ||
* register. Native because we want to check the actual CPU | ||
* state, not the interrupt state as imagined by Xen. | ||
*/ | ||
unsigned long flags = native_save_fl(); | ||
WARN_ON_ONCE(flags & (X86_EFLAGS_AC | X86_EFLAGS_DF | | ||
X86_EFLAGS_NT)); | ||
|
||
/* We think we came from user mode. Make sure pt_regs agrees. */ | ||
WARN_ON_ONCE(!user_mode(regs)); | ||
|
||
/* | ||
* All entries from user mode (except #DF) should be on the | ||
* normal thread stack and should have user pt_regs in the | ||
* correct location. | ||
*/ | ||
WARN_ON_ONCE(!on_thread_stack()); | ||
WARN_ON_ONCE(regs != task_pt_regs(current)); | ||
} | ||
} | ||
#define arch_check_user_regs arch_check_user_regs | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters