Skip to content

Commit fe7ed5b

Browse files
committed
fix limit of the TSS descriptor
without this fix, the processor assumes that a I/O permission map is available
1 parent 330679f commit fe7ed5b

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

src/arch/x86_64/gdt.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ pub fn init() {
109109
let tss_descriptor: Descriptor64 =
110110
<DescriptorBuilder as GateDescriptorBuilder<u64>>::tss_descriptor(
111111
base,
112-
base + mem::size_of::<TaskStateSegment>() as u64 - 1,
112+
mem::size_of::<TaskStateSegment>() as u64 - 1,
113113
true,
114114
)
115115
.present()
@@ -126,14 +126,12 @@ pub fn init() {
126126

127127
// Reload the segment descriptors
128128
load_cs(SegmentSelector::new(GDT_KERNEL_CODE as u16, Ring::Ring0));
129-
load_ds(SegmentSelector::new(GDT_KERNEL_DATA as u16, Ring::Ring0));
130-
load_es(SegmentSelector::new(GDT_KERNEL_DATA as u16, Ring::Ring0));
131129
load_ss(SegmentSelector::new(GDT_KERNEL_DATA as u16, Ring::Ring0));
132130
}
133131
}
134132

135133
#[inline(always)]
136-
pub unsafe fn set_kernel_stack(stack: usize) {
134+
unsafe fn set_kernel_stack(stack: usize) {
137135
TSS.0.rsp[0] = stack as u64;
138136
}
139137

0 commit comments

Comments
 (0)