]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
backlight: led_bl: Hold led_access lock when calling led_sysfs_disable()
authorHerve Codina <herve.codina@bootlin.com>
Wed, 22 Jan 2025 09:19:14 +0000 (10:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 May 2025 05:41:13 +0000 (07:41 +0200)
[ Upstream commit 276822a00db3c1061382b41e72cafc09d6a0ec30 ]

Lockdep detects the following issue on led-backlight removal:
  [  142.315935] ------------[ cut here ]------------
  [  142.315954] WARNING: CPU: 2 PID: 292 at drivers/leds/led-core.c:455 led_sysfs_enable+0x54/0x80
  ...
  [  142.500725] Call trace:
  [  142.503176]  led_sysfs_enable+0x54/0x80 (P)
  [  142.507370]  led_bl_remove+0x80/0xa8 [led_bl]
  [  142.511742]  platform_remove+0x30/0x58
  [  142.515501]  device_remove+0x54/0x90
  ...

Indeed, led_sysfs_enable() has to be called with the led_access
lock held.

Hold the lock when calling led_sysfs_disable().

Fixes: ae232e45acf9 ("backlight: add led-backlight driver")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Link: https://lore.kernel.org/r/20250122091914.309533-1-herve.codina@bootlin.com
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/video/backlight/led_bl.c

index f54d256e2d5488e04085f71a182a4a8129f50cfe..1020e4405a4d1db56e6b263ca5185f1a60b1d698 100644 (file)
@@ -226,8 +226,11 @@ static int led_bl_remove(struct platform_device *pdev)
        backlight_device_unregister(bl);
 
        led_bl_power_off(priv);
-       for (i = 0; i < priv->nb_leds; i++)
+       for (i = 0; i < priv->nb_leds; i++) {
+               mutex_lock(&priv->leds[i]->led_access);
                led_sysfs_enable(priv->leds[i]);
+               mutex_unlock(&priv->leds[i]->led_access);
+       }
 
        return 0;
 }