nubus: Switch to dynamic root device

Driver core expects devices to be dynamically allocated and will, for
example, complain loudly if a device that lacks a release function is
ever freed.

Use root_device_register() to allocate and register the root device
instead of open coding using a static device.

Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: Finn Thain <fthain@linux-m68k.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://patch.msgid.link/20260424104011.2616970-1-johan@kernel.org
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
Johan Hovold
2026-04-24 12:40:11 +02:00
committed by Geert Uytterhoeven
parent 99a680bed6
commit bcb685e15e

View File

@@ -41,9 +41,7 @@ module_param_named(populate_procfs, nubus_populate_procfs, bool, 0);
LIST_HEAD(nubus_func_rsrcs);
static struct device nubus_parent = {
.init_name = "nubus",
};
static struct device *nubus_parent;
/* Meaning of "bytelanes":
@@ -833,7 +831,7 @@ static void __init nubus_add_board(int slot, int bytelanes)
list_add_tail(&fres->list, &nubus_func_rsrcs);
}
if (nubus_device_register(&nubus_parent, board))
if (nubus_device_register(nubus_parent, board))
put_device(&board->dev);
}
@@ -880,18 +878,17 @@ static void __init nubus_scan_bus(void)
static int __init nubus_init(void)
{
int err;
if (!MACH_IS_MAC)
return 0;
nubus_proc_init();
err = device_register(&nubus_parent);
if (err) {
put_device(&nubus_parent);
return err;
}
nubus_parent = root_device_register("nubus");
if (IS_ERR(nubus_parent))
return PTR_ERR(nubus_parent);
nubus_scan_bus();
return 0;
}