amd svm: Do not touch (non-existent) attr and selector fields for GDTR
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 16 Jun 2008 14:21:49 +0000 (15:21 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 16 Jun 2008 14:21:49 +0000 (15:21 +0100)
and IDTR in the VMCB in svm_set_segment_register(). This is just for
clarity of code and to prevent any issues in the future.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hvm/svm/svm.c

index 9af2032b411ee64e94b0b92decacc1717d3ff294..3f0dd62ce27905963c11539c9cf15002a541c56c 100644 (file)
@@ -574,10 +574,12 @@ static void svm_set_segment_register(struct vcpu *v, enum x86_segment seg,
         memcpy(&vmcb->tr, reg, sizeof(*reg));
         break;
     case x86_seg_gdtr:
-        memcpy(&vmcb->gdtr, reg, sizeof(*reg));
+        vmcb->gdtr.base = reg->base;
+        vmcb->gdtr.limit = (uint16_t)reg->limit;
         break;
     case x86_seg_idtr:
-        memcpy(&vmcb->idtr, reg, sizeof(*reg));
+        vmcb->idtr.base = reg->base;
+        vmcb->idtr.limit = (uint16_t)reg->limit;
         break;
     case x86_seg_ldtr:
         memcpy(&vmcb->ldtr, reg, sizeof(*reg));