[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240322104303.GN13211@google.com>
Date: Fri, 22 Mar 2024 10:43:03 +0000
From: Lee Jones <lee@...nel.org>
To: George Stark <gnstark@...utedevices.com>
Cc: andy.shevchenko@...il.com, pavel@....cz, vadimp@...dia.com,
christophe.leroy@...roup.eu, hdegoede@...hat.com,
mazziesaccount@...il.com, peterz@...radead.org, mingo@...hat.com,
will@...nel.org, longman@...hat.com, boqun.feng@...il.com,
nikitos.tr@...il.com, marek.behun@....cz, kabel@...nel.org,
linux-leds@...r.kernel.org, linux-kernel@...r.kernel.org,
kernel@...utedevices.com
Subject: Re: [PATCH v7 0/8] devm_led_classdev_register() usage problem
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.
--
Lee Jones [李琼斯]
Powered by blists - more mailing lists