From: Adrian Pop Date: Wed, 20 Dec 2017 14:50:42 +0000 (+0100) Subject: x86/hvm: Fix altp2m_vcpu_enable_notify error handling X-Git-Tag: RELEASE-4.9.2~101 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a20f83846e9d0945ec1090926f6faa681e663b40;p=xen.git x86/hvm: Fix altp2m_vcpu_enable_notify error handling 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 Reviewed-by: Andrew Cooper Reviewed-by: Jan Beulich master commit: eb0660c6950e08e44fdfeca3e29320382e2a1554 master date: 2017-11-16 17:25:59 +0000 --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 5b033caef6..9f6a698a0e 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -4484,12 +4484,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_eq(vcpu_altp2m(curr).veinfo_gfn, INVALID_GFN) || mfn_eq(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);