Messages in this thread | | | Date | Fri, 29 Mar 2024 16:43:06 +0300 | From | George Stark <> | Subject | Re: [PATCH v7 0/8] devm_led_classdev_register() usage problem |
| |
Hello Lee
On 3/22/24 13:43, Lee Jones wrote: > On Fri, 22 Mar 2024, George Stark wrote: > >> Hello Lee >> >> On 3/21/24 21:11, Lee Jones wrote: >>> On Thu, 14 Mar 2024, George Stark wrote: >>> >>>> 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 subsystem 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. >> >> ... >> >>>> locking/mutex: introduce devm_mutex_init() >>>> 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 initialization >>>> leds: an30259a: use devm_mutex_init() for mutex initialization >>>> >>>> drivers/leds/leds-an30259a.c | 14 ++++---------- >>>> drivers/leds/leds-aw200xx.c | 32 +++++++++++++++++++++----------- >>>> drivers/leds/leds-aw2013.c | 25 +++++++++++++------------ >>>> drivers/leds/leds-lm3532.c | 29 +++++++++++++++++------------ >>>> drivers/leds/leds-lp3952.c | 21 +++++++++++---------- >>>> drivers/leds/leds-mlxreg.c | 14 +++++--------- >>>> drivers/leds/leds-nic78bx.c | 23 +++++++++++++---------- >>>> include/linux/mutex.h | 27 +++++++++++++++++++++++++++ >>>> kernel/locking/mutex-debug.c | 11 +++++++++++ >>>> 9 files changed, 122 insertions(+), 74 deletions(-) >>> >>> Doesn't apply to v6.8. >>> >>> What base was used for this? >> >> I've just pulled git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git >> and v7 was applied cleanly. linux-next is ok too. >> >> v6.8 is lack of recent patch 6969d0a2ba1adc9ba6a49b9805f24080896c255c >> v7's patch #2 depends on it > > No problem. I'll wait for v6.9-rc1. >
Just checked the v7 patch series on released 6.9-rc1 and it's applied cleanly. If anything i can help please let me know.
-- Best regards George
| |