]> xenbits.xensource.com Git - xen.git/commitdiff
xen: fix XEN_DOMCTL_memory_mapping to not return with domain RCU lock held
authorKeir Fraser <keir@xen.org>
Tue, 18 Jan 2011 12:25:54 +0000 (12:25 +0000)
committerKeir Fraser <keir@xen.org>
Tue, 18 Jan 2011 12:25:54 +0000 (12:25 +0000)
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

xen/arch/x86/domctl.c

index 15554e26c505b7e931c2fccfe9a08c35324b4915..60837c8e263052d7a9f3879eece04438bd4cfb43 100644 (file)
@@ -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 )
         {