[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] common: don't require use of DOMID_SELF
It's not overly difficult for a domain to figure out its ID, so requiring the use of DOMID_SELF in a very limited set of places isn't really helpful towards keeping the ID opaque to the guest. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -2776,15 +2776,19 @@ struct gnttab_copy_buf { static int gnttab_copy_lock_domain(domid_t domid, bool is_gref, struct gnttab_copy_buf *buf) { - /* Only DOMID_SELF may reference via frame. */ - if ( domid != DOMID_SELF && !is_gref ) - return GNTST_permission_denied; - buf->domain = rcu_lock_domain_by_any_id(domid); if ( !buf->domain ) return GNTST_bad_domain; + /* Only the local domain may reference via frame. */ + if ( buf->domain != current->domain && !is_gref ) + { + rcu_unlock_domain(buf->domain); + buf->domain = NULL; + return GNTST_permission_denied; + } + buf->ptr.domid = domid; return GNTST_okay; --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2566,13 +2566,7 @@ __initcall(register_heap_trigger); struct domain *get_pg_owner(domid_t domid) { - struct domain *pg_owner = NULL, *curr = current->domain; - - if ( unlikely(domid == curr->domain_id) ) - { - gdprintk(XENLOG_WARNING, "Cannot specify itself as foreign domain\n"); - goto out; - } + struct domain *pg_owner; switch ( domid ) { @@ -2590,7 +2584,6 @@ struct domain *get_pg_owner(domid_t domi break; } - out: return pg_owner; }
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |