| .. | .. | 
|---|
| 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 |  | 
|---|