hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/dio/dio.c
....@@ -110,6 +110,12 @@
110110
111111 #endif /* CONFIG_DIO_CONSTANTS */
112112
113
+static void dio_dev_release(struct device *dev)
114
+{
115
+ struct dio_dev *ddev = container_of(dev, typeof(struct dio_dev), dev);
116
+ kfree(ddev);
117
+}
118
+
113119 int __init dio_find(int deviceid)
114120 {
115121 /* Called to find a DIO device before the full bus scan has run.
....@@ -224,6 +230,7 @@
224230 dev->bus = &dio_bus;
225231 dev->dev.parent = &dio_bus.dev;
226232 dev->dev.bus = &dio_bus_type;
233
+ dev->dev.release = dio_dev_release;
227234 dev->scode = scode;
228235 dev->resource.start = pa;
229236 dev->resource.end = pa + DIO_SIZE(scode, va);
....@@ -251,6 +258,7 @@
251258 if (error) {
252259 pr_err("DIO: Error registering device %s\n",
253260 dev->name);
261
+ put_device(&dev->dev);
254262 continue;
255263 }
256264 error = dio_create_sysfs_dev_files(dev);