mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86 mce: Fix panic in mcheck_mca_logout
I met the following panic message in mcheck_mca_logout(). MSR_IA32_MCi_ADDR might take the values other than the machine address. FATAL PAGE FAULT occured when the non-existent address is passed to maddr_get_owner(). Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com>
This commit is contained in:
1 parent
4e8febe0b8
commit
7451edbf39
1 file changed
+6
-4
@@ -237,10 +237,12 @@ mctelem_cookie_t mcheck_mca_logout(enum mca_source who, cpu_banks_t bankmask,
|
||||
|
||||
if (status & MCi_STATUS_ADDRV) {
|
||||
mca_rdmsrl(MSR_IA32_MC0_ADDR + 4 * i, addr);
|
||||
d = maddr_get_owner(addr);
|
||||
if (d != NULL && (who == MCA_POLLER ||
|
||||
who == MCA_CMCI_HANDLER))
|
||||
mcb.mc_domid = d->domain_id;
|
||||
if (mfn_valid(paddr_to_pfn(addr))) {
|
||||
d = maddr_get_owner(addr);
|
||||
if (d != NULL && (who == MCA_POLLER ||
|
||||
who == MCA_CMCI_HANDLER))
|
||||
mcb.mc_domid = d->domain_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (status & MCi_STATUS_MISCV)
|
||||
|
||||