]> xenbits.xensource.com Git - xen.git/commitdiff
x86/hvm: Fix altp2m_vcpu_enable_notify error handling
authorAdrian Pop <apop@bitdefender.com>
Wed, 20 Dec 2017 15:18:09 +0000 (16:18 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 20 Dec 2017 15:18:09 +0000 (16:18 +0100)
The altp2m_vcpu_enable_notify subop handler might skip calling
rcu_unlock_domain() after rcu_lock_current_domain().  Albeit since both
rcu functions are no-ops when run on the current domain, this doesn't
really have repercussions.

The second change is adding a missing break that would have potentially
enabled #VE for the current domain even if it had intended to enable it
for another one (not a supported functionality).

Signed-off-by: Adrian Pop <apop@bitdefender.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit: eb0660c6950e08e44fdfeca3e29320382e2a1554
master date: 2017-11-16 17:25:59 +0000

xen/arch/x86/hvm/hvm.c

index db48fd4cfdee753721e6ec7e85fbf5d499b494e7..2125d403ad0475c5233c8cb2f21950cb3cf1e486 100644 (file)
@@ -5364,12 +5364,18 @@ static int do_altp2m_op(
 
         if ( a.u.enable_notify.pad || a.domain != DOMID_SELF ||
              a.u.enable_notify.vcpu_id != curr->vcpu_id )
+        {
             rc = -EINVAL;
+            break;
+        }
 
         if ( (gfn_x(vcpu_altp2m(curr).veinfo_gfn) != INVALID_GFN) ||
              (mfn_x(get_gfn_query_unlocked(curr->domain,
                     a.u.enable_notify.gfn, &p2mt)) == INVALID_MFN) )
-            return -EINVAL;
+        {
+            rc = -EINVAL;
+            break;
+        }
 
         vcpu_altp2m(curr).veinfo_gfn = _gfn(a.u.enable_notify.gfn);
         altp2m_vcpu_update_vmfunc_ve(curr);