[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 2/7] x86/domctl: rework XEN_DOMCTL_{set, get}_address_size
Going through toolstack code, they are used for PV guests only. Tighten their access to PV only. Return -EOPNOTSUPP if they are called on HVM guests. Rewrite the code in a pattern that makes DCE work. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- v3: rewritten --- xen/arch/x86/domctl.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index f79827e..33f9a86 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -609,19 +609,33 @@ long arch_do_domctl( break; case XEN_DOMCTL_set_address_size: - if ( ((domctl->u.address_size.size == 64) && !d->arch.is_32bit_pv) || - ((domctl->u.address_size.size == 32) && d->arch.is_32bit_pv) ) - ret = 0; - else if ( domctl->u.address_size.size == 32 ) - ret = switch_compat(d); + if ( is_hvm_domain(d) ) + ret = -EOPNOTSUPP; + else if ( is_pv_domain(d) ) + { + if ( ((domctl->u.address_size.size == 64) && !d->arch.is_32bit_pv) || + ((domctl->u.address_size.size == 32) && d->arch.is_32bit_pv) ) + ret = 0; + else if ( domctl->u.address_size.size == 32 ) + ret = switch_compat(d); + else + ret = -EINVAL; + } else - ret = -EINVAL; + ASSERT_UNREACHABLE(); break; case XEN_DOMCTL_get_address_size: - domctl->u.address_size.size = is_pv_32bit_domain(d) ? 32 : - BITS_PER_LONG; - copyback = true; + if ( is_hvm_domain(d) ) + ret = -EOPNOTSUPP; + else if ( is_pv_domain(d) ) + { + domctl->u.address_size.size = + is_pv_32bit_domain(d) ? 32 : BITS_PER_LONG; + copyback = true; + } + else + ASSERT_UNREACHABLE(); break; case XEN_DOMCTL_set_machine_address_size: -- git-series 0.9.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 |