Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 323591
b: refs/heads/master
c: ef3f628
h: refs/heads/master
i:
  323589: 957297c
  323587: 8ecf60d
  323583: 375e9e5
v: v3
  • Loading branch information
Frederic Weisbecker committed Sep 26, 2012
1 parent 37dd46f commit 24800bc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bf5a3c13b939813d28ce26c01425054c740d6731
refs/heads/master: ef3f628872c838933a279d0d7e63e707783c9710
38 changes: 16 additions & 22 deletions trunk/arch/x86/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,13 +258,25 @@ do_general_protection(struct pt_regs *regs, long error_code)
conditional_sti(regs);

#ifdef CONFIG_X86_32
if (regs->flags & X86_VM_MASK)
goto gp_in_vm86;
if (regs->flags & X86_VM_MASK) {
local_irq_enable();
handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
return;
}
#endif

tsk = current;
if (!user_mode(regs))
goto gp_in_kernel;
if (!user_mode(regs)) {
if (fixup_exception(regs))
return;

tsk->thread.error_code = error_code;
tsk->thread.trap_nr = X86_TRAP_GP;
if (!notify_die(DIE_GPF, "general protection fault", regs, error_code,
X86_TRAP_GP, SIGSEGV) == NOTIFY_STOP)
die("general protection fault", regs, error_code);
return;
}

tsk->thread.error_code = error_code;
tsk->thread.trap_nr = X86_TRAP_GP;
Expand All @@ -280,24 +292,6 @@ do_general_protection(struct pt_regs *regs, long error_code)

force_sig(SIGSEGV, tsk);
return;

#ifdef CONFIG_X86_32
gp_in_vm86:
local_irq_enable();
handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
return;
#endif

gp_in_kernel:
if (fixup_exception(regs))
return;

tsk->thread.error_code = error_code;
tsk->thread.trap_nr = X86_TRAP_GP;
if (notify_die(DIE_GPF, "general protection fault", regs, error_code,
X86_TRAP_GP, SIGSEGV) == NOTIFY_STOP)
return;
die("general protection fault", regs, error_code);
}

/* May run on IST stack. */
Expand Down

0 comments on commit 24800bc

Please sign in to comment.