[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 19/20] xen: remove rcu_lock_{remote_, }target_domain_by_id
These functions are now (mostly) unused, replaced by versions without an implicit access control check. Make the checks explicit in the remaining callers. Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> --- xen/arch/x86/physdev.c | 18 +++++++++++------- xen/common/domain.c | 34 ---------------------------------- xen/include/xen/sched.h | 14 -------------- 3 files changed, 11 insertions(+), 55 deletions(-) diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index d6ea4f0..4dfb5a0 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -106,9 +106,11 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p, return physdev_hvm_map_pirq(d, type, index, pirq_p); } - ret = rcu_lock_target_domain_by_id(domid, &d); - if ( ret ) - return ret; + d = rcu_lock_domain_by_any_id(domid); + if ( d == NULL ) + return -ESRCH; + if ( d != current->domain && !IS_PRIV_FOR(current->domain, d) ) + return -EPERM; /* Verify or get irq. */ switch ( type ) @@ -217,11 +219,13 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p, int physdev_unmap_pirq(domid_t domid, int pirq) { struct domain *d; - int ret; + int ret = 0; - ret = rcu_lock_target_domain_by_id(domid, &d); - if ( ret ) - return ret; + d = rcu_lock_domain_by_any_id(domid); + if ( d == NULL ) + return -ESRCH; + if ( d != current->domain && !IS_PRIV_FOR(current->domain, d) ) + return -EPERM; if ( is_hvm_domain(d) ) { diff --git a/xen/common/domain.c b/xen/common/domain.c index 52489b3..ecfc6d6 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -427,40 +427,6 @@ struct domain *rcu_lock_domain_by_any_id(domid_t dom) return rcu_lock_domain_by_id(dom); } -int rcu_lock_target_domain_by_id(domid_t dom, struct domain **d) -{ - if ( dom == DOMID_SELF ) - { - *d = rcu_lock_current_domain(); - return 0; - } - - if ( (*d = rcu_lock_domain_by_id(dom)) == NULL ) - return -ESRCH; - - if ( !IS_PRIV_FOR(current->domain, *d) ) - { - rcu_unlock_domain(*d); - return -EPERM; - } - - return 0; -} - -int rcu_lock_remote_target_domain_by_id(domid_t dom, struct domain **d) -{ - if ( (*d = rcu_lock_domain_by_id(dom)) == NULL ) - return -ESRCH; - - if ( (*d == current->domain) || !IS_PRIV_FOR(current->domain, *d) ) - { - rcu_unlock_domain(*d); - return -EPERM; - } - - return 0; -} - int rcu_lock_remote_domain_by_id(domid_t dom, struct domain **d) { if ( (*d = rcu_lock_domain_by_id(dom)) == NULL ) diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index b0def4a..9019c21 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -452,20 +452,6 @@ struct domain *rcu_lock_domain_by_id(domid_t dom); struct domain *rcu_lock_domain_by_any_id(domid_t dom); /* - * As above function, but accounts for current domain context: - * - Translates target DOMID_SELF into caller's domain id; and - * - Checks that caller has permission to act on the target domain. - */ -int rcu_lock_target_domain_by_id(domid_t dom, struct domain **d); - -/* - * As rcu_lock_target_domain_by_id(), but will fail EPERM rather than resolve - * to local domain. Successful return always resolves to a remote domain that - * the local domain is privileged to control. - */ -int rcu_lock_remote_target_domain_by_id(domid_t dom, struct domain **d); - -/* * As rcu_lock_domain_by_id(), but will fail EPERM or ESRCH rather than resolve * to local domain. */ -- 1.7.11.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |