# Commit 16e2a7596e9fc86881c73cef57602b2c88155528 # Date 2014-05-02 11:46:32 +0200 # Author Paul Durrant # Committer Jan Beulich hvm_set_ioreq_page() releases wrong page in error path The function calls prepare_ring_for_helper() to acquire a mapping for the given gmfn, then checks (under lock) to see if the ioreq page is already set up but, if it is, the function then releases the in-use ioreq page mapping on the error path rather than the one it just acquired. This patch fixes this bug. Signed-off-by: Paul Durrant Reviewed-by: Jan Beulich Reviewed-by: Andrew Cooper --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -478,7 +478,7 @@ static int hvm_set_ioreq_page( if ( (iorp->va != NULL) || d->is_dying ) { - destroy_ring_for_helper(&iorp->va, iorp->page); + destroy_ring_for_helper(&va, page); spin_unlock(&iorp->lock); return -EINVAL; }