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@xxxxxx/ ... > 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