]> xenbits.xensource.com Git - xen.git/commitdiff
x86/EPT: correct double unmap_domain_page() on error path
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 22 Apr 2014 12:45:10 +0000 (14:45 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 22 Apr 2014 12:45:10 +0000 (14:45 +0200)
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@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/mm/p2m-ept.c

index b0ab3ceba54f7fc0128f091fd9c020dc8cd59d3e..8d3051bf53cbbee519d09f468c5021a2a442946b 100644 (file)
@@ -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;
                     }