diff options
author | Keir Fraser <keir@xen.org> | 2011-01-18 12:25:54 +0000 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2011-01-18 12:25:54 +0000 |
commit | adcc41a72a0425dc6280f2a8da92d8a9136128f8 (patch) | |
tree | 942670684c089572b278729cd62b3bcb09544a9a | |
parent | 649db76541d67b95b82e9c5316f4dead6344b37a (diff) | |
download | xen-adcc41a72a0425dc6280f2a8da92d8a9136128f8.tar.gz xen-adcc41a72a0425dc6280f2a8da92d8a9136128f8.tar.bz2 xen-adcc41a72a0425dc6280f2a8da92d8a9136128f8.zip |
xen: fix XEN_DOMCTL_memory_mapping to not return with domain RCU lock held
Broken in 20358:ecc649ec3675
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
xen-unstable changeset: 22775:e4688c57c230
xen-unstable date: Tue Jan 18 09:04:04 2011 +0000
-rw-r--r-- | xen/arch/x86/domctl.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 15554e26c5..60837c8e26 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -962,15 +962,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 ) { |