Index: /trunk/src/VBox/VMM/VMMR3/GIMKvm.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/GIMKvm.cpp	(revision 56423)
+++ /trunk/src/VBox/VMM/VMMR3/GIMKvm.cpp	(revision 56424)
@@ -351,5 +351,6 @@
         SSMR3GetGCPhys(pSSM, &pKvmCpu->GCPhysSystemTime);
         SSMR3GetU32(pSSM, &pKvmCpu->u32SystemTimeVersion);
-        SSMR3GetU8(pSSM, &fSystemTimeFlags);
+        rc = SSMR3GetU8(pSSM, &fSystemTimeFlags);
+        AssertRCReturn(rc, rc);
 
         /* Enable the system-time struct. if necessary. */
@@ -390,4 +391,14 @@
 VMMR3_INT_DECL(int) gimR3KvmEnableSystemTime(PVM pVM, PVMCPU pVCpu, PGIMKVMCPU pKvmCpu, uint8_t fFlags)
 {
+    /*
+     * Validate the mapping address first.
+     */
+    if (!PGMPhysIsGCPhysNormal(pVM, pKvmCpu->GCPhysSystemTime))
+    {
+        LogRel(("GIM: KVM: VCPU%3d: Invalid physical addr requested for mapping system-time struct. GCPhysSystemTime=%#RGp\n",
+                pKvmCpu->GCPhysSystemTime));
+        return VERR_GIM_OPERATION_FAILED;
+    }
+
     GIMKVMSYSTEMTIME SystemTime;
     RT_ZERO(SystemTime);
@@ -423,5 +434,4 @@
 
     Assert(!(SystemTime.u32Version & UINT32_C(1)));
-    Assert(PGMPhysIsGCPhysNormal(pVM, pKvmCpu->GCPhysSystemTime));
     int rc = PGMPhysSimpleWriteGCPhys(pVM, pKvmCpu->GCPhysSystemTime, &SystemTime, sizeof(GIMKVMSYSTEMTIME));
     if (RT_SUCCESS(rc))
