From 349aa9792bc69c2d9ab82b24130b6c4c519d0971 Mon Sep 17 00:00:00 2001 From: 0xAX <0xAX@users.noreply.github.com> Date: Sun, 25 Oct 2015 18:39:39 +0600 Subject: [PATCH] Update interrupts-5.md --- interrupts/interrupts-5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interrupts/interrupts-5.md b/interrupts/interrupts-5.md index 8855edb..bfdd165 100644 --- a/interrupts/interrupts-5.md +++ b/interrupts/interrupts-5.md @@ -299,7 +299,7 @@ static const char str[] = "double fault"; struct task_struct *tsk = current; ``` -The handler of the double fault exception splitted on two parts. The first part is the check which checks that a fault is a `non-IST` fault on the `espfix64` stack. Actually the `iret` instruction restores only the bottom `16` bits when returning to a `16` bit segment. The `espfix` feature solves this problem. So if the `non-IST` fault on the espfix64 stack we modify the stack to make it look like `General Protection Fault`: +The handler of the double fault exception split on two parts. The first part is the check which checks that a fault is a `non-IST` fault on the `espfix64` stack. Actually the `iret` instruction restores only the bottom `16` bits when returning to a `16` bit segment. The `espfix` feature solves this problem. So if the `non-IST` fault on the espfix64 stack we modify the stack to make it look like `General Protection Fault`: ```C struct pt_regs *normal_regs = task_pt_regs(current);