|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-3.4-testing] x86_emulate: protmode_load_seg() canno
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1250694068 -3600
# Node ID daf1ff2c7dbd59b2ab31e6427be58ffdc14e10fd
# Parent 8bf8c7ca15d957bbcb928b2cb991f9a807b5d76d
x86_emulate: protmode_load_seg() cannot load system segments in long mode.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset: 20034:71d6d6f2ecd6
xen-unstable date: Fri Aug 07 09:54:43 2009 +0100
---
xen/arch/x86/x86_emulate/x86_emulate.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff -r 8bf8c7ca15d9 -r daf1ff2c7dbd xen/arch/x86/x86_emulate/x86_emulate.c
--- a/xen/arch/x86/x86_emulate/x86_emulate.c Wed Aug 19 16:00:32 2009 +0100
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c Wed Aug 19 16:01:08 2009 +0100
@@ -1012,8 +1012,17 @@ protmode_load_seg(
goto raise_exn;
}
- /* System segments must have the system flag (S) set. */
- if ( (desc.b & (1u<<12)) == (!is_x86_user_segment(seg) << 12) )
+ if ( !is_x86_user_segment(seg) )
+ {
+ /* System segments must have S flag == 0. */
+ if ( desc.b & (1u << 12) )
+ goto raise_exn;
+ /* We do not support 64-bit descriptor types. */
+ if ( in_longmode(ctxt, ops) )
+ return X86EMUL_UNHANDLEABLE;
+ }
+ /* User segments must have S flag == 1. */
+ else if ( !(desc.b & (1u << 12)) )
goto raise_exn;
dpl = (desc.b >> 13) & 3;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-3.4-testing] x86_emulate: protmode_load_seg() cannot load system segments in long mode.,
Xen patchbot-3.4-testing <=
|
|
|
|
|