|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/3] x86/HVM: prefer structure assignment for seg reg copying
This makes things type safe.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -1434,7 +1434,8 @@ static int hvmemul_read_segment(
if ( IS_ERR(sreg) )
return -PTR_ERR(sreg);
- memcpy(reg, sreg, sizeof(struct segment_register));
+ *reg = *sreg;
+
return X86EMUL_OKAY;
}
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -654,39 +654,39 @@ static void svm_get_segment_register(str
switch ( seg )
{
case x86_seg_cs:
- memcpy(reg, &vmcb->cs, sizeof(*reg));
+ *reg = vmcb->cs;
break;
case x86_seg_ds:
- memcpy(reg, &vmcb->ds, sizeof(*reg));
+ *reg = vmcb->ds;
break;
case x86_seg_es:
- memcpy(reg, &vmcb->es, sizeof(*reg));
+ *reg = vmcb->es;
break;
case x86_seg_fs:
svm_sync_vmcb(v);
- memcpy(reg, &vmcb->fs, sizeof(*reg));
+ *reg = vmcb->fs;
break;
case x86_seg_gs:
svm_sync_vmcb(v);
- memcpy(reg, &vmcb->gs, sizeof(*reg));
+ *reg = vmcb->gs;
break;
case x86_seg_ss:
- memcpy(reg, &vmcb->ss, sizeof(*reg));
+ *reg = vmcb->ss;
reg->attr.fields.dpl = vmcb->_cpl;
break;
case x86_seg_tr:
svm_sync_vmcb(v);
- memcpy(reg, &vmcb->tr, sizeof(*reg));
+ *reg = vmcb->tr;
break;
case x86_seg_gdtr:
- memcpy(reg, &vmcb->gdtr, sizeof(*reg));
+ *reg = vmcb->gdtr;
break;
case x86_seg_idtr:
- memcpy(reg, &vmcb->idtr, sizeof(*reg));
+ *reg = vmcb->idtr;
break;
case x86_seg_ldtr:
svm_sync_vmcb(v);
- memcpy(reg, &vmcb->ldtr, sizeof(*reg));
+ *reg = vmcb->ldtr;
break;
default:
BUG();
@@ -729,26 +729,26 @@ static void svm_set_segment_register(str
switch ( seg )
{
case x86_seg_cs:
- memcpy(&vmcb->cs, reg, sizeof(*reg));
+ vmcb->cs = *reg;
break;
case x86_seg_ds:
- memcpy(&vmcb->ds, reg, sizeof(*reg));
+ vmcb->ds = *reg;
break;
case x86_seg_es:
- memcpy(&vmcb->es, reg, sizeof(*reg));
+ vmcb->es = *reg;
break;
case x86_seg_fs:
- memcpy(&vmcb->fs, reg, sizeof(*reg));
+ vmcb->fs = *reg;
break;
case x86_seg_gs:
- memcpy(&vmcb->gs, reg, sizeof(*reg));
+ vmcb->gs = *reg;
break;
case x86_seg_ss:
- memcpy(&vmcb->ss, reg, sizeof(*reg));
+ vmcb->ss = *reg;
vmcb->_cpl = vmcb->ss.attr.fields.dpl;
break;
case x86_seg_tr:
- memcpy(&vmcb->tr, reg, sizeof(*reg));
+ vmcb->tr = *reg;
break;
case x86_seg_gdtr:
vmcb->gdtr.base = reg->base;
@@ -759,7 +759,7 @@ static void svm_set_segment_register(str
vmcb->idtr.limit = reg->limit;
break;
case x86_seg_ldtr:
- memcpy(&vmcb->ldtr, reg, sizeof(*reg));
+ vmcb->ldtr = *reg;
break;
default:
BUG();
Attachment:
x86-HVM-sreg-copying.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |