[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] x86/mm: drop gfn ref before calling handle_mmio()



# HG changeset patch
# User Tim Deegan <tim@xxxxxxx>
# Date 1331312064 0
# Node ID 5d20d2f6ffed0a49f030f04a8870f1926babbcbf
# Parent  10c5ba0b5af2dd209d4f7d27649dea5827652d9c
x86/mm: drop gfn ref before calling handle_mmio()

Otherwise we get a deadlock between the p2m lock and the event lock,
which handle_mmio() acquires.

Signed-off-by: Tim Deegan <tim@xxxxxxx>
Acked-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
---


diff -r 10c5ba0b5af2 -r 5d20d2f6ffed xen/arch/x86/hvm/hvm.c
--- a/xen/arch/x86/hvm/hvm.c    Fri Mar 09 09:58:41 2012 +0000
+++ b/xen/arch/x86/hvm/hvm.c    Fri Mar 09 16:54:24 2012 +0000
@@ -1324,10 +1324,11 @@
     if ( (p2mt == p2m_mmio_dm) || 
          (access_w && (p2mt == p2m_ram_ro)) )
     {
+        put_gfn(p2m->domain, gfn);
         if ( !handle_mmio() )
             hvm_inject_exception(TRAP_gp_fault, 0, 0);
         rc = 1;
-        goto out_put_gfn;
+        goto out;
     }
 
 #ifdef __x86_64__
@@ -1379,6 +1380,7 @@
 
 out_put_gfn:
     put_gfn(p2m->domain, gfn);
+out:
     if ( paged )
         p2m_mem_paging_populate(v->domain, gfn);
     if ( req_ptr )

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.