summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2026-04-24 12:40:11 +0200
committerGeert Uytterhoeven <geert@linux-m68k.org>2026-05-18 11:16:19 +0200
commitbcb685e15ee66daec68025a40be3b54156ad0410 (patch)
tree59c84a57349354f6ffcfcaf45465d065b2d88ef7 /drivers
parent99a680bed60428175ff9c5c95d579826ca2ff3f8 (diff)
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/nubus/nubus.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/nubus/nubus.c b/drivers/nubus/nubus.c
index 559dce302d06..40ce4991c356 100644
--- a/drivers/nubus/nubus.c
+++ b/drivers/nubus/nubus.c
@@ -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;
}