From: Paul Durrant Date: Sun, 18 Dec 2011 14:51:04 +0000 (+0000) Subject: Allow VMs to query their own grant table version. X-Git-Tag: 4.0.4-rc1~29 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c76a11f540161c49347c381bb28f1d28a2062d97;p=xen.git Allow VMs to query their own grant table version. Signed-off-by: Paul Durrant Committed-by: Keir Fraser xen-unstable changeset: 24427:931bf1105730 xen-unstable date: Sun Dec 18 14:38:32 2011 +0000 --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index e089365964..640969b7d1 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2181,6 +2181,7 @@ static int grant_table_op_is_allowed(unsigned int cmd) case GNTTABOP_query_size: case GNTTABOP_setup_table: case GNTTABOP_set_version: + case GNTTABOP_get_version: case GNTTABOP_copy: case GNTTABOP_map_grant_ref: case GNTTABOP_unmap_grant_ref: diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 8de1af9085..87aff17ac7 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -2199,17 +2199,15 @@ gnttab_get_version(XEN_GUEST_HANDLE(gnttab_get_version_t uop)) { gnttab_get_version_t op; struct domain *d; + int rc; if ( copy_from_guest(&op, uop, 1) ) return -EFAULT; - d = rcu_lock_domain_by_id(op.dom); - if ( d == NULL ) - return -ESRCH; - if ( !IS_PRIV_FOR(current->domain, d) ) - { - rcu_unlock_domain(d); - return -EPERM; - } + + rc = rcu_lock_target_domain_by_id(op.dom, &d); + if ( rc < 0 ) + return rc; + spin_lock(&d->grant_table->lock); op.version = d->grant_table->gt_version; spin_unlock(&d->grant_table->lock);