Commit b81e3140 authored by Stephen Boyd's avatar Stephen Boyd Committed by Greg Kroah-Hartman

firmware: coreboot: Make bus registration symmetric

The bus is registered in module_init() but is unregistered when the
platform driver remove() function calls coreboot_table_exit(). That
isn't symmetric and it causes the bus to appear on systems that compile
this code in, even when there isn't any coreboot firmware on the device.
Let's move the registration to the coreboot_table_init() function so
that it matches the exit path.

Cc: Wei-Ning Huang <wnhuang@chromium.org>
Cc: Julius Werner <jwerner@chromium.org>
Cc: Brian Norris <briannorris@chromium.org>
Cc: Samuel Holland <samuel@sholland.org>
Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
Reviewed-by: default avatarJulius Werner <jwerner@chromium.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 20edec38
...@@ -70,12 +70,6 @@ static struct bus_type coreboot_bus_type = { ...@@ -70,12 +70,6 @@ static struct bus_type coreboot_bus_type = {
.remove = coreboot_bus_remove, .remove = coreboot_bus_remove,
}; };
static int __init coreboot_bus_init(void)
{
return bus_register(&coreboot_bus_type);
}
module_init(coreboot_bus_init);
static void coreboot_device_release(struct device *dev) static void coreboot_device_release(struct device *dev)
{ {
struct coreboot_device *device = CB_DEV(dev); struct coreboot_device *device = CB_DEV(dev);
...@@ -114,6 +108,10 @@ int coreboot_table_init(struct device *dev, void __iomem *ptr) ...@@ -114,6 +108,10 @@ int coreboot_table_init(struct device *dev, void __iomem *ptr)
goto out; goto out;
} }
ret = bus_register(&coreboot_bus_type);
if (ret)
goto out;
ptr_entry = (void *)ptr_header + header.header_bytes; ptr_entry = (void *)ptr_header + header.header_bytes;
for (i = 0; i < header.table_entries; i++) { for (i = 0; i < header.table_entries; i++) {
memcpy_fromio(&entry, ptr_entry, sizeof(entry)); memcpy_fromio(&entry, ptr_entry, sizeof(entry));
...@@ -138,6 +136,10 @@ int coreboot_table_init(struct device *dev, void __iomem *ptr) ...@@ -138,6 +136,10 @@ int coreboot_table_init(struct device *dev, void __iomem *ptr)
ptr_entry += entry.size; ptr_entry += entry.size;
} }
if (ret)
bus_unregister(&coreboot_bus_type);
out: out:
iounmap(ptr); iounmap(ptr);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment