[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 2/6] x86/vvmx: correct vmfail() usage for vmptrld and vmclear
On Fri, Oct 12, 2018 at 04:27:55PM +0100, Sergey Dyasli wrote: > Calling vmfail_valid() is correct only if vvmcx is valid. Modify > functions to use vmfail() instead which performs the necessary check. > > Signed-off-by: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx> Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> I think the code is a bit convoluted because what fields get access is hidden behind layers of macros and functions. In order to catch future issues, may I suggest you add some assertions to vmfail_{in,}valid? Like ASSERT(!cpu_has_vmx_vmcs_shadowing && vvmcx_invalid(v)); in vmfail_invalid. Something similar can be added in vmfail_valid as well. > --- > xen/arch/x86/hvm/vmx/vvmx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c > index 8eee6d0ea8..26b7d72660 100644 > --- a/xen/arch/x86/hvm/vmx/vvmx.c > +++ b/xen/arch/x86/hvm/vmx/vvmx.c > @@ -1744,7 +1744,7 @@ int nvmx_handle_vmptrld(struct cpu_user_regs *regs) > !map_io_bitmap_all(v) || > !_map_msr_bitmap(v) ) > { > - vmfail_valid(regs, VMX_INSN_VMPTRLD_INVALID_PHYADDR); > + vmfail(regs, VMX_INSN_VMPTRLD_INVALID_PHYADDR); > goto out; > } > } > @@ -1828,7 +1828,7 @@ int nvmx_handle_vmclear(struct cpu_user_regs *regs) > if ( rc == VMSUCCEED ) > vmsucceed(regs); > else if ( rc == VMFAIL_VALID ) > - vmfail_valid(regs, VMX_INSN_VMCLEAR_INVALID_PHYADDR); > + vmfail(regs, VMX_INSN_VMCLEAR_INVALID_PHYADDR); > else > vmfail_invalid(regs); > > -- > 2.17.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |