.. | .. |
---|
110 | 110 | |
---|
111 | 111 | #endif /* CONFIG_DIO_CONSTANTS */ |
---|
112 | 112 | |
---|
| 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 | + |
---|
113 | 119 | int __init dio_find(int deviceid) |
---|
114 | 120 | { |
---|
115 | 121 | /* Called to find a DIO device before the full bus scan has run. |
---|
.. | .. |
---|
224 | 230 | dev->bus = &dio_bus; |
---|
225 | 231 | dev->dev.parent = &dio_bus.dev; |
---|
226 | 232 | dev->dev.bus = &dio_bus_type; |
---|
| 233 | + dev->dev.release = dio_dev_release; |
---|
227 | 234 | dev->scode = scode; |
---|
228 | 235 | dev->resource.start = pa; |
---|
229 | 236 | dev->resource.end = pa + DIO_SIZE(scode, va); |
---|
.. | .. |
---|
251 | 258 | if (error) { |
---|
252 | 259 | pr_err("DIO: Error registering device %s\n", |
---|
253 | 260 | dev->name); |
---|
| 261 | + put_device(&dev->dev); |
---|
254 | 262 | continue; |
---|
255 | 263 | } |
---|
256 | 264 | error = dio_create_sysfs_dev_files(dev); |
---|