diff options
author | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2013-01-11 10:41:51 +0000 |
---|---|---|
committer | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2013-01-11 10:41:51 +0000 |
commit | 652f94327383c5517b709f0a3e4b970216b3d375 (patch) | |
tree | d81086462375a68fa66ba6b315ef83d793a0df7a /xen/arch/x86/domctl.c | |
parent | 58632b5b140c35e8003a4efbe1eabe936c602490 (diff) | |
download | xen-652f94327383c5517b709f0a3e4b970216b3d375.tar.gz xen-652f94327383c5517b709f0a3e4b970216b3d375.tar.bz2 xen-652f94327383c5517b709f0a3e4b970216b3d375.zip |
xen: domctl XSM hook removal
A number of the domctl XSM hooks do nothing except pass the domain and
operation ID, making them redundant with the xsm_domctl hook. Remove
these redundant hooks.
The remaining domctls all use individual hooks because they pass extra
details of the call to the XSM module in order to allow a more
fine-grained access decision to be made - for example, considering the
exact device or memory range being set up for guest access.
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/domctl.c')
-rw-r--r-- | xen/arch/x86/domctl.c | 76 |
1 files changed, 4 insertions, 72 deletions
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 10558a02fe..6ab2006a28 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -97,10 +97,6 @@ long arch_do_domctl( page = mfn_to_page(mfn); - ret = xsm_getpageframeinfo(d); - if ( ret ) - break; - if ( likely(get_page(page, d)) ) { ret = 0; @@ -141,10 +137,6 @@ long arch_do_domctl( struct page_info *page; xen_pfn_t *arr; - ret = xsm_getpageframeinfo(d); - if ( ret ) - break; - if ( unlikely(num > 1024) || unlikely(num != domctl->u.getpageframeinfo3.num) ) { @@ -239,10 +231,6 @@ long arch_do_domctl( int num = domctl->u.getpageframeinfo2.num; uint32_t *arr32; - ret = xsm_getpageframeinfo(d); - if ( ret ) - break; - if ( unlikely(num > 1024) ) { ret = -E2BIG; @@ -334,10 +322,6 @@ long arch_do_domctl( uint64_t mfn; struct page_info *page; - ret = xsm_getmemlist(d); - if ( ret ) - break; - if ( unlikely(d->is_dying) ) { ret = -EINVAL; break; @@ -373,10 +357,6 @@ long arch_do_domctl( struct page_info *page; void *hypercall_page; - ret = xsm_hypercall_init(d); - if ( ret ) - break; - page = get_page_from_gfn(d, gmfn, NULL, P2M_ALLOC); ret = -EACCES; @@ -401,10 +381,6 @@ long arch_do_domctl( { struct hvm_domain_context c = { .size = domctl->u.hvmcontext.size }; - ret = xsm_hvmcontext(d, domctl->cmd); - if ( ret ) - goto sethvmcontext_out; - ret = -EINVAL; if ( !is_hvm_domain(d) ) goto sethvmcontext_out; @@ -431,10 +407,6 @@ long arch_do_domctl( { struct hvm_domain_context c = { 0 }; - ret = xsm_hvmcontext(d, domctl->cmd); - if ( ret ) - goto gethvmcontext_out; - ret = -EINVAL; if ( !is_hvm_domain(d) ) goto gethvmcontext_out; @@ -477,10 +449,6 @@ long arch_do_domctl( case XEN_DOMCTL_gethvmcontext_partial: { - ret = xsm_hvmcontext(d, domctl->cmd); - if ( ret ) - break; - ret = -EINVAL; if ( !is_hvm_domain(d) ) break; @@ -496,10 +464,6 @@ long arch_do_domctl( case XEN_DOMCTL_set_address_size: { - ret = xsm_address_size(d, domctl->cmd); - if ( ret ) - break; - switch ( domctl->u.address_size.size ) { case 32: @@ -517,10 +481,6 @@ long arch_do_domctl( case XEN_DOMCTL_get_address_size: { - ret = xsm_address_size(d, domctl->cmd); - if ( ret ) - break; - domctl->u.address_size.size = is_pv_32on64_domain(d) ? 32 : BITS_PER_LONG; @@ -531,10 +491,6 @@ long arch_do_domctl( case XEN_DOMCTL_set_machine_address_size: { - ret = xsm_machine_address_size(d, domctl->cmd); - if ( ret ) - break; - ret = -EBUSY; if ( d->tot_pages > 0 ) break; @@ -547,10 +503,6 @@ long arch_do_domctl( case XEN_DOMCTL_get_machine_address_size: { - ret = xsm_machine_address_size(d, domctl->cmd); - if ( ret ) - break; - domctl->u.address_size.size = d->arch.physaddr_bitsize; ret = 0; @@ -562,10 +514,6 @@ long arch_do_domctl( { struct vcpu *v; - ret = xsm_sendtrigger(d); - if ( ret ) - break; - ret = -EINVAL; if ( domctl->u.sendtrigger.vcpu >= MAX_VIRT_CPUS ) break; @@ -832,10 +780,6 @@ long arch_do_domctl( case XEN_DOMCTL_pin_mem_cacheattr: { - ret = xsm_pin_mem_cacheattr(d); - if ( ret ) - break; - ret = hvm_set_mem_pinned_cacheattr( d, domctl->u.pin_mem_cacheattr.start, domctl->u.pin_mem_cacheattr.end, @@ -851,10 +795,6 @@ long arch_do_domctl( evc = &domctl->u.ext_vcpucontext; - ret = xsm_ext_vcpucontext(d, domctl->cmd); - if ( ret ) - break; - ret = -ESRCH; if ( (evc->vcpu >= d->max_vcpus) || ((v = d->vcpu[evc->vcpu]) == NULL) ) @@ -1118,10 +1058,6 @@ long arch_do_domctl( evc = &domctl->u.vcpuextstate; - ret = xsm_vcpuextstate(d, domctl->cmd); - if ( ret ) - goto vcpuextstate_out; - ret = -ESRCH; if ( (evc->vcpu >= d->max_vcpus) || ((v = d->vcpu[evc->vcpu]) == NULL) ) @@ -1231,9 +1167,7 @@ long arch_do_domctl( case XEN_DOMCTL_mem_sharing_op: { - ret = xsm_mem_sharing(d); - if ( !ret ) - ret = mem_sharing_domctl(d, &domctl->u.mem_sharing_op); + ret = mem_sharing_domctl(d, &domctl->u.mem_sharing_op); } break; @@ -1263,11 +1197,9 @@ long arch_do_domctl( if ( current->domain == d ) break; - ret = xsm_mem_event_setup(d); - if ( !ret ) { - p2m = p2m_get_hostp2m(d); - p2m->access_required = domctl->u.access_required.access_required; - } + ret = 0; + p2m = p2m_get_hostp2m(d); + p2m->access_required = domctl->u.access_required.access_required; } break; |