]> xenbits.xensource.com Git - xen.git/commitdiff
x86/MCE: correct struct mcinfo_extended for compat guests
authorJan Beulich <jbeulich@suse.com>
Thu, 9 Jan 2020 10:09:02 +0000 (11:09 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 9 Jan 2020 10:09:02 +0000 (11:09 +0100)
The use of any kind of pointers in the public interface is wrong,
including dimensioning arrays based on the size of pointers. The least
bad option of addressing the issue looks to be to pin down the number
that the (64-bit) hypervisor has used anyway (even when passing
information to compat but privileged guests). There aren't actual
instantiations of the structure apart from ones allocated dynamically
out of struct mc_info's mi_data[], which is entirely controlled by the
hypervisor.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/include/public/arch-x86/xen-mca.h

index 72649c5446c1f76799eb785f7d7f1fc30ca15ff2..b5e04b54446603e26f01a3c408fe5fc3fe2dd596 100644 (file)
@@ -170,9 +170,9 @@ struct mcinfo_extended {
     /*
      * Currently Intel extended MSR (32/64) include all gp registers
      * and E(R)FLAGS, E(R)IP, E(R)MISC, up to 11/19 of them might be
-     * useful at present. So expand this array to 16/32 to leave room.
+     * useful at present. So expand this array to 32 to leave room.
      */
-    struct mcinfo_msr mc_msr[sizeof(void *) * 4];
+    struct mcinfo_msr mc_msr[32];
 };
 
 /* Recovery Action flags. Giving recovery result information to DOM0 */