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.
Note that this also fixes a reference leak in case device_register()
fails which may be flagged by static checkers.
Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: William Breathitt Gray <wbg@kernel.org>
Link: https://patch.msgid.link/20260424102400.2615677-1-johan@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
#include <linux/dma-mapping.h>
#include <linux/isa.h>
-static struct device isa_bus = {
- .init_name = "isa"
-};
+static struct device *isa_bus;
struct isa_dev {
struct device dev;
break;
}
- isa_dev->dev.parent = &isa_bus;
+ isa_dev->dev.parent = isa_bus;
isa_dev->dev.bus = &isa_bus_type;
dev_set_name(&isa_dev->dev, "%s.%u",
error = bus_register(&isa_bus_type);
if (!error) {
- error = device_register(&isa_bus);
- if (error)
+ isa_bus = root_device_register("isa");
+ if (IS_ERR(isa_bus)) {
+ error = PTR_ERR(isa_bus);
bus_unregister(&isa_bus_type);
+ }
}
return error;
}