This patch series fixes the problem of devm_led_classdev_register misusing. The basic problem is described in [1]. Shortly when devm_led_classdev_register() is used then led_classdev_unregister() called after driver's remove() callback. led_classdev_unregister() calls driver's brightness_set callback and that callback may use resources which were destroyed already in driver's remove(). After discussion with maintainers [2] [3] we decided: 1) don't touch led subsytem core code and don't remove led_set_brightness() from it but fix drivers 2) don't use devm_led_classdev_unregister So the solution is to use devm wrappers for all resources driver's brightness_set() depends on. And introduce dedicated devm wrapper for mutex as it's often used resource. [1] https://lore.kernel.org/lkml/8704539b-ed3b-44e6-aa82-586e2f895e2b@xxxxxxxxxxxxxxxxx/T/ [2] https://lore.kernel.org/lkml/8704539b-ed3b-44e6-aa82-586e2f895e2b@xxxxxxxxxxxxxxxxx/T/#mc132b9b350fa51931b4fcfe14705d9f06e91421f [3] https://lore.kernel.org/lkml/8704539b-ed3b-44e6-aa82-586e2f895e2b@xxxxxxxxxxxxxxxxx/T/#mdbf572a85c33f869a553caf986b6228bb65c8383 George Stark (10): devm-helpers: introduce devm_mutex_init leds: aw2013: unlock mutex before destroying it leds: aw2013: use devm API to cleanup module's resources leds: aw200xx: use devm API to cleanup module's resources leds: lp3952: use devm API to cleanup module's resources leds: lm3532: use devm API to cleanup module's resources leds: nic78bx: use devm API to cleanup module's resources leds: mlxreg: use devm_mutex_init for mutex initializtion leds: an30259a: use devm_mutext_init for mutext initialization leds: powernv: add LED_RETAIN_AT_SHUTDOWN flag for leds drivers/leds/leds-an30259a.c | 14 ++++---------- drivers/leds/leds-aw200xx.c | 36 +++++++++++++++++++++++++----------- drivers/leds/leds-aw2013.c | 28 ++++++++++++++++------------ drivers/leds/leds-lm3532.c | 29 +++++++++++++++++------------ drivers/leds/leds-lp3952.c | 21 +++++++++++---------- drivers/leds/leds-mlxreg.c | 15 ++++----------- drivers/leds/leds-nic78bx.c | 25 +++++++++++++------------ drivers/leds/leds-powernv.c | 23 ++++++++--------------- include/linux/devm-helpers.h | 18 ++++++++++++++++++ 9 files changed, 116 insertions(+), 93 deletions(-) -- 2.38.4