$NetBSD: patch-CVE-2014-9030,v 1.1 2014/11/27 15:36:02 bouyer Exp $ x86/mm: fix a reference counting error in MMU_MACHPHYS_UPDATE Any domain which can pass the XSM check against a translated guest can cause a page reference to be leaked. While shuffling the order of checks, drop the quite-pointless MEM_LOG(). This brings the check in line with similar checks in the vicinity. Discovered while reviewing the XSA-109/110 followup series. This is XSA-113. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Reviewed-by: Tim Deegan --- xen/arch/x86/mm.c.orig 2014-11-27 15:21:15.000000000 +0100 +++ xen/arch/x86/mm.c 2014-11-27 15:37:25.000000000 +0100 @@ -3888,6 +3892,12 @@ case MMU_MACHPHYS_UPDATE: + if ( unlikely(paging_mode_translate(pg_owner)) ) + { + rc = -EINVAL; + break; + } + mfn = req.ptr >> PAGE_SHIFT; gpfn = req.val; @@ -3901,12 +3911,6 @@ break; } - if ( unlikely(paging_mode_translate(pg_owner)) ) - { - MEM_LOG("Mach-phys update on auto-translate guest"); - break; - } - set_gpfn_from_mfn(mfn, gpfn); okay = 1;