.. | .. |
---|
236 | 236 | |
---|
237 | 237 | led_dev = class_find_device_by_of_node(leds_class, led_node); |
---|
238 | 238 | of_node_put(led_node); |
---|
| 239 | + put_device(led_dev); |
---|
239 | 240 | |
---|
240 | 241 | if (!led_dev) |
---|
241 | 242 | return ERR_PTR(-EPROBE_DEFER); |
---|
242 | 243 | |
---|
243 | 244 | led_cdev = dev_get_drvdata(led_dev); |
---|
244 | 245 | |
---|
245 | | - if (!try_module_get(led_cdev->dev->parent->driver->owner)) |
---|
| 246 | + if (!try_module_get(led_cdev->dev->parent->driver->owner)) { |
---|
| 247 | + put_device(led_cdev->dev); |
---|
246 | 248 | return ERR_PTR(-ENODEV); |
---|
| 249 | + } |
---|
247 | 250 | |
---|
248 | 251 | return led_cdev; |
---|
249 | 252 | } |
---|
.. | .. |
---|
256 | 259 | void led_put(struct led_classdev *led_cdev) |
---|
257 | 260 | { |
---|
258 | 261 | module_put(led_cdev->dev->parent->driver->owner); |
---|
| 262 | + put_device(led_cdev->dev); |
---|
259 | 263 | } |
---|
260 | 264 | EXPORT_SYMBOL_GPL(led_put); |
---|
261 | 265 | |
---|