Skip to content
Snippets Groups Projects
Commit c7317d4d authored by kolya's avatar kolya
Browse files

always save and restore %fs, %gs to ensure old segment entries are never

accessible to user from the hidden CPU segment registers.
parent adcd16c3
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,8 @@ alltraps:
# Build trap frame.
pushl %ds
pushl %es
pushl %fs
pushl %gs
pushal
# Set up data segments.
......@@ -24,6 +26,8 @@ alltraps:
.globl trapret
trapret:
popal
popl %gs
popl %fs
popl %es
popl %ds
addl $0x8, %esp # trapno and errcode
......
......@@ -135,21 +135,25 @@ struct trapframe {
uint eax;
// rest of trap frame
ushort es;
ushort gs;
ushort padding1;
ushort ds;
ushort fs;
ushort padding2;
ushort es;
ushort padding3;
ushort ds;
ushort padding4;
uint trapno;
// below here defined by x86 hardware
uint err;
uint eip;
ushort cs;
ushort padding3;
ushort padding5;
uint eflags;
// below here only when crossing rings, such as from user to kernel
uint esp;
ushort ss;
ushort padding4;
ushort padding6;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment