summaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorJia He <justin.he@arm.com>2022-10-10 04:35:56 +0200
committerBorislav Petkov <bp@suse.de>2022-10-21 21:59:19 +0200
commit802e7f1dfed7cc7fb309995e0c4138f08977fdfc (patch)
tree736993b84576eae54f792db8c9719afbb511b61a /drivers/acpi
parentEDAC/ghes: Prepare to make ghes_edac a proper module (diff)
downloadlinux-802e7f1dfed7cc7fb309995e0c4138f08977fdfc.tar.xz
linux-802e7f1dfed7cc7fb309995e0c4138f08977fdfc.zip
EDAC/ghes: Make ghes_edac a proper module
Commit dc4e8c07e9e2 ("ACPI: APEI: explicit init of HEST and GHES in apci_init()") introduced a bug leading to ghes_edac_register() to be invoked before edac_init(). Because at that time the bus "edac" hadn't been even registered, this created sysfs nodes as /devices/mc0 instead of /sys/devices/system/edac/mc/mc0 on an Ampere eMag server. Fix this by turning ghes_edac into a proper module. The list of GHES devices returned is not protected from being modified concurrently but it is pretty static as it gets created only during GHES init and latter is not a module so... [ bp: Massage. ] Fixes: dc4e8c07e9e2 ("ACPI: APEI: explicit init of HEST and GHES in apci_init()") Co-developed-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Jia He <justin.he@arm.com> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lore.kernel.org/r/20221010023559.69655-5-justin.he@arm.com
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/apei/ghes.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index acab512741f6..249cd01cb920 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -1392,8 +1392,6 @@ static int ghes_probe(struct platform_device *ghes_dev)
platform_set_drvdata(ghes_dev, ghes);
- ghes_edac_register(ghes, &ghes_dev->dev);
-
ghes->dev = &ghes_dev->dev;
mutex_lock(&ghes_devs_mutex);
@@ -1462,8 +1460,6 @@ static int ghes_remove(struct platform_device *ghes_dev)
ghes_fini(ghes);
- ghes_edac_unregister(ghes);
-
mutex_lock(&ghes_devs_mutex);
list_del(&ghes->elist);
mutex_unlock(&ghes_devs_mutex);