[PATCH] EDAC/ghes: reset DMI scan state after registration failure
From: kensanya
Date: Wed Sep 09 2026 - 03:32:22 EST
From: TanZheng <tanzheng@xxxxxxxxxx>
ghes_scan_system() sets system_scanned after the DMI walk. The unlock
path always kfree()s ghes_hw.dimms but left system_scanned and
num_dimms set, so a later ghes_edac_register() skipped the scan and
indexed a NULL dimms array.
Clear the scan flag (and num_dimms) in that shared unlock path when a
scan actually ran. The next register() will walk DMI again.
Signed-off-by: TanZheng <tanzheng@xxxxxxxxxx>
---
drivers/edac/ghes_edac.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c
index d80c88818691..b0630f1a2815 100644
--- a/drivers/edac/ghes_edac.c
+++ b/drivers/edac/ghes_edac.c
@@ -499,6 +499,10 @@ static int ghes_edac_register(struct device *dev)
/* Not needed anymore */
kfree(ghes_hw.dimms);
ghes_hw.dimms = NULL;
+ if (system_scanned) {
+ system_scanned = false;
+ ghes_hw.num_dimms = 0;
+ }
mutex_unlock(&ghes_reg_mutex);
--
2.25.1