diff options
author | kib <kib@FreeBSD.org> | 2010-05-12 10:29:06 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2010-05-12 10:29:06 +0000 |
commit | 7b04e359b060fb4d6869ca817495df9327ef6090 (patch) | |
tree | 154b022694033ec5ba03e8ad9b246113e0dc62fb | |
parent | ee02e5dd0ee6cca1f60bddf090ec30d378fd0c01 (diff) | |
download | FreeBSD-src-7b04e359b060fb4d6869ca817495df9327ef6090.zip FreeBSD-src-7b04e359b060fb4d6869ca817495df9327ef6090.tar.gz |
Remove unneeded overrides of the segment registers in the inner trap
frame upon segment register load fault. The doreti procedure does not
load segment registers when returning to the kernel frame, and current
values in the segment descriptor cache already allow the kernel mode
to run, not modified by faulted loaded.
Suggested by: bde
Tested by: pho
MFC after: 1 week
-rw-r--r-- | sys/amd64/amd64/trap.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index f3dba94..d5ddc59 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -488,22 +488,18 @@ trap(struct trapframe *frame) } if (frame->tf_rip == (long)ld_ds) { frame->tf_rip = (long)ds_load_fault; - frame->tf_ds = _udatasel; goto out; } if (frame->tf_rip == (long)ld_es) { frame->tf_rip = (long)es_load_fault; - frame->tf_es = _udatasel; goto out; } if (frame->tf_rip == (long)ld_fs) { frame->tf_rip = (long)fs_load_fault; - frame->tf_fs = _ufssel; goto out; } if (frame->tf_rip == (long)ld_gs) { frame->tf_rip = (long)gs_load_fault; - frame->tf_gs = _ugssel; goto out; } if (frame->tf_rip == (long)ld_gsbase) { |