From: Keir Fraser Date: Tue, 18 Jan 2011 09:04:04 +0000 (+0000) Subject: xen: fix XEN_DOMCTL_memory_mapping to not return with domain RCU lock held X-Git-Tag: 4.1.0-rc2~22 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9fd6c06946e2d3782199547771f54d562cd0f85a;p=xen.git xen: fix XEN_DOMCTL_memory_mapping to not return with domain RCU lock held Broken in 20358:ecc649ec3675 Signed-off-by: Ian Campbell --- diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 6652aad8af..6fb5504d78 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -965,15 +965,15 @@ long arch_do_domctl( if ( (mfn + nr_mfns - 1) < mfn ) /* wrap? */ break; - ret = -ESRCH; - if ( unlikely((d = rcu_lock_domain_by_id(domctl->domain)) == NULL) ) - break; - ret = -EPERM; if ( !IS_PRIV(current->domain) && !iomem_access_permitted(current->domain, mfn, mfn + nr_mfns - 1) ) break; + ret = -ESRCH; + if ( unlikely((d = rcu_lock_domain_by_id(domctl->domain)) == NULL) ) + break; + ret=0; if ( domctl->u.memory_mapping.add_mapping ) {