Decoding an invalid address with certain firmware decoders could
cause a #PF (Page Fault) in the EFI runtime context, which could
subsequently hang the system. To make {i10nm,skx}_edac more robust
against such bogus firmware decoders, filter out invalid addresses
before allowing the firmware decoder to process them.
Suggested-by: Tony Luck <[email protected]>
Signed-off-by: Qiuxu Zhuo <[email protected]>
---
drivers/edac/skx_common.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/edac/skx_common.c b/drivers/edac/skx_common.c
index ce3e0069e028..9c5b6f8bd8bd 100644
--- a/drivers/edac/skx_common.c
+++ b/drivers/edac/skx_common.c
@@ -648,6 +648,10 @@ int skx_mce_check_error(struct notifier_block *nb, unsigned long val,
memset(&res, 0, sizeof(res));
res.mce = mce;
res.addr = mce->addr & MCI_ADDR_PHYSADDR;
+ if (!pfn_to_online_page(res.addr >> PAGE_SHIFT)) {
+ pr_err("Invalid address 0x%llx in IA32_MC%d_ADDR\n", mce->addr, mce->bank);
+ return NOTIFY_DONE;
+ }
/* Try driver decoder first */
if (!(driver_decode && driver_decode(&res))) {
--
2.17.1
> Decoding an invalid address with certain firmware decoders could
> cause a #PF (Page Fault) in the EFI runtime context, which could
> subsequently hang the system. To make {i10nm,skx}_edac more robust
> against such bogus firmware decoders, filter out invalid addresses
> before allowing the firmware decoder to process them.
Applied. Thanks.
[Boris: This one with a "Link:" tag]
-Tony
On Tue, Jan 02, 2024 at 05:37:20PM +0000, Luck, Tony wrote:
> > Decoding an invalid address with certain firmware decoders could
> > cause a #PF (Page Fault) in the EFI runtime context, which could
> > subsequently hang the system. To make {i10nm,skx}_edac more robust
> > against such bogus firmware decoders, filter out invalid addresses
> > before allowing the firmware decoder to process them.
>
> Applied. Thanks.
>
> [Boris: This one with a "Link:" tag]
Thanks! :)
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette