Re: [PATCH v3 01/11] leds: led-class: Add missing put_device() to led_put()

Andy Shevchenko
2022-12-16T13:55:58Z

On Fri, Dec 16, 2022 at 03:35:29PM +0200, Andy Shevchenko wrote:
> On Fri, Dec 16, 2022 at 12:30:03PM +0100, Hans de Goede wrote:

...

> > led_cdev = dev_get_drvdata(led_dev);
> >
> > - if (!try_module_get(led_cdev->dev->parent->driver->owner))
> > + if (!try_module_get(led_cdev->dev->parent->driver->owner)) {
> > + put_device(led_cdev->dev);
> > return ERR_PTR(-ENODEV);
> > + }
> >
> > return led_cdev;
>
> ...
>
> > void led_put(struct led_classdev *led_cdev)
> > {
> > module_put(led_cdev->dev->parent->driver->owner);
> > + put_device(led_cdev->dev);
>
> Hmm... It was in the original submission.
>
> https://lore.kernel.org/linux-leds/1443605522-1118-2-git-send-email-tomi.valkeinen@ti.com/

...

> Nevertheless, shouldn't you put device before putting module? (It may need to
> save the owner of the driver, I think.)

I think this is wrong, the symmetry is kept correct in your patch.

--
With Best Regards,
Andy Shevchenko