[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/domctl: rework XEN_DOMCTL_{set, get}_address_size
commit f969bc9fc966d3f00d756922f35c2b6ebf533967 Author: Wei Liu <wei.liu2@xxxxxxxxxx> AuthorDate: Fri Nov 2 15:55:40 2018 +0000 Commit: Wei Liu <wei.liu2@xxxxxxxxxx> CommitDate: Mon Nov 5 16:09:50 2018 +0000 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> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- 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 f79827e6e4..33f9a869c0 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: -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |