aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/domctl.c
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:41:51 +0000
committerDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:41:51 +0000
commit652f94327383c5517b709f0a3e4b970216b3d375 (patch)
treed81086462375a68fa66ba6b315ef83d793a0df7a /xen/arch/x86/domctl.c
parent58632b5b140c35e8003a4efbe1eabe936c602490 (diff)
downloadxen-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.c76
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;