mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 21:57:43 +00:00
x86/asm/entry: Replace some open-coded VM86 checks with v8086_mode() checks
This allows us to remove some unnecessary ifdefs. There should be no change to the generated code. Signed-off-by: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brad Spengler <spender@grsecurity.net> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/f7e00f0d668e253abf0bd8bf36491ac47bd761ff.1426728647.git.luto@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
7a2806741e
commit
d74ef1118a
1 changed files with 4 additions and 7 deletions
|
@ -194,8 +194,7 @@ static nokprobe_inline int
|
||||||
do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
|
do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
|
||||||
struct pt_regs *regs, long error_code)
|
struct pt_regs *regs, long error_code)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_X86_32
|
if (v8086_mode(regs)) {
|
||||||
if (regs->flags & X86_VM_MASK) {
|
|
||||||
/*
|
/*
|
||||||
* Traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
|
* Traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
|
||||||
* On nmi (interrupt 2), do_trap should not be called.
|
* On nmi (interrupt 2), do_trap should not be called.
|
||||||
|
@ -207,7 +206,7 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (!user_mode_ignore_vm86(regs)) {
|
if (!user_mode_ignore_vm86(regs)) {
|
||||||
if (!fixup_exception(regs)) {
|
if (!fixup_exception(regs)) {
|
||||||
tsk->thread.error_code = error_code;
|
tsk->thread.error_code = error_code;
|
||||||
|
@ -462,13 +461,11 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||||
prev_state = exception_enter();
|
prev_state = exception_enter();
|
||||||
conditional_sti(regs);
|
conditional_sti(regs);
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
if (v8086_mode(regs)) {
|
||||||
if (regs->flags & X86_VM_MASK) {
|
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
|
handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
tsk = current;
|
tsk = current;
|
||||||
if (!user_mode_ignore_vm86(regs)) {
|
if (!user_mode_ignore_vm86(regs)) {
|
||||||
|
@ -673,7 +670,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)
|
||||||
/* It's safe to allow irq's after DR6 has been saved */
|
/* It's safe to allow irq's after DR6 has been saved */
|
||||||
preempt_conditional_sti(regs);
|
preempt_conditional_sti(regs);
|
||||||
|
|
||||||
if (regs->flags & X86_VM_MASK) {
|
if (v8086_mode(regs)) {
|
||||||
handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code,
|
handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code,
|
||||||
X86_TRAP_DB);
|
X86_TRAP_DB);
|
||||||
preempt_conditional_cli(regs);
|
preempt_conditional_cli(regs);
|
||||||
|
|
Loading…
Reference in a new issue