]> xenbits.xensource.com Git - people/dwmw2/xen.git/commitdiff
x86/HVM: don't crash guest in hvmemul_find_mmio_cache()
authorJan Beulich <jbeulich@suse.com>
Fri, 3 May 2019 08:37:58 +0000 (10:37 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 3 May 2019 08:37:58 +0000 (10:37 +0200)
Commit 35a61c05ea ("x86emul: adjust handling of AVX2 gathers") builds
upon the fact that the domain will actually survive running out of MMIO
result buffer space. Drop the domain_crash() invocation. Also delay
incrementing of the usage counter, such that the function can't possibly
use/return an out-of-bounds slot/pointer in case execution subsequently
makes it into the function again without a prior reset of state.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
master commit: a43c1dec246bdee484e6a3de001cc6850a107abe
master date: 2019-03-12 14:39:46 +0100

xen/arch/x86/hvm/emulate.c

index 2d02ef152168674c19c343ffefabad6ab4c6fe08..754baf68d5ad2e7bcc98bd9e1d53391b05722a04 100644 (file)
@@ -966,12 +966,11 @@ static struct hvm_mmio_cache *hvmemul_find_mmio_cache(
             return cache;
     }
 
-    i = vio->mmio_cache_count++;
+    i = vio->mmio_cache_count;
     if( i == ARRAY_SIZE(vio->mmio_cache) )
-    {
-        domain_crash(current->domain);
         return NULL;
-    }
+
+    ++vio->mmio_cache_count;
 
     cache = &vio->mmio_cache[i];
     memset(cache, 0, sizeof (*cache));