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

[Xen-changelog] [xen master] x86/EPT: correct double unmap_domain_page() on error path



commit 75e253bb78f2b7905c20a0caddd8eb2fb77e5eab
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Tue Apr 22 14:45:10 2014 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Apr 22 14:45:10 2014 +0200

    x86/EPT: correct double unmap_domain_page() on error path
    
    c/s 3d90d6e6 "x86/EPT: split super pages upon mismatching memory types"
    accidentally introduced an error path where the epte domain page would be
    unmapped twice if splitting the superpage failed.
    
    Only unmap the page if the loop is to be continued.  When breaking from the
    loop, the page will be unmapped by the subsequent code.
    
    Coverity-ID: 1203047
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 xen/arch/x86/mm/p2m-ept.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index b0ab3ce..8d3051b 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -351,9 +351,9 @@ bool_t ept_handle_misconfig(uint64_t gpa)
                                              e.sa_p2mt == p2m_mmio_direct);
                 if ( unlikely(emt < 0) )
                 {
-                    unmap_domain_page(epte);
                     if ( ept_split_super_page(p2m, &e, level, level - 1) )
                     {
+                        unmap_domain_page(epte);
                         mfn = e.mfn;
                         continue;
                     }
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
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®.