]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Nov 2024 13:17:34 +0000 (14:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Nov 2024 13:17:34 +0000 (14:17 +0100)
added patches:
leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch

queue-6.6/leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch b/queue-6.6/leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch
new file mode 100644 (file)
index 0000000..cfe15f4
--- /dev/null
@@ -0,0 +1,69 @@
+From efc347b9efee1c2b081f5281d33be4559fa50a16 Mon Sep 17 00:00:00 2001
+From: George Stark <gnstark@salutedevices.com>
+Date: Thu, 11 Apr 2024 19:10:31 +0300
+Subject: leds: mlxreg: Use devm_mutex_init() for mutex initialization
+
+From: George Stark <gnstark@salutedevices.com>
+
+commit efc347b9efee1c2b081f5281d33be4559fa50a16 upstream.
+
+In this driver LEDs are registered using devm_led_classdev_register()
+so they are automatically unregistered after module's remove() is done.
+led_classdev_unregister() calls module's led_set_brightness() to turn off
+the LEDs and that callback uses mutex which was destroyed already
+in module's remove() so use devm API instead.
+
+Signed-off-by: George Stark <gnstark@salutedevices.com>
+Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
+Link: https://lore.kernel.org/r/20240411161032.609544-8-gnstark@salutedevices.com
+Signed-off-by: Lee Jones <lee@kernel.org>
+[ Resolve minor conflicts to fix CVE-2024-42129 ]
+Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/leds/leds-mlxreg.c |   16 +++++-----------
+ 1 file changed, 5 insertions(+), 11 deletions(-)
+
+--- a/drivers/leds/leds-mlxreg.c
++++ b/drivers/leds/leds-mlxreg.c
+@@ -257,6 +257,7 @@ static int mlxreg_led_probe(struct platf
+ {
+       struct mlxreg_core_platform_data *led_pdata;
+       struct mlxreg_led_priv_data *priv;
++      int err;
+       led_pdata = dev_get_platdata(&pdev->dev);
+       if (!led_pdata) {
+@@ -268,28 +269,21 @@ static int mlxreg_led_probe(struct platf
+       if (!priv)
+               return -ENOMEM;
+-      mutex_init(&priv->access_lock);
++      err = devm_mutex_init(&pdev->dev, &priv->access_lock);
++      if (err)
++              return err;
++
+       priv->pdev = pdev;
+       priv->pdata = led_pdata;
+       return mlxreg_led_config(priv);
+ }
+-static int mlxreg_led_remove(struct platform_device *pdev)
+-{
+-      struct mlxreg_led_priv_data *priv = dev_get_drvdata(&pdev->dev);
+-
+-      mutex_destroy(&priv->access_lock);
+-
+-      return 0;
+-}
+-
+ static struct platform_driver mlxreg_led_driver = {
+       .driver = {
+           .name = "leds-mlxreg",
+       },
+       .probe = mlxreg_led_probe,
+-      .remove = mlxreg_led_remove,
+ };
+ module_platform_driver(mlxreg_led_driver);
index 283e6c1fd59ba61fdc201844e77b1162878a1662..d68b638edf834f5c3b101ef1308c78e6346e9bdc 100644 (file)
@@ -71,3 +71,4 @@ mptcp-drop-lookup_by_id-in-lookup_addr.patch
 mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch
 drm-amd-pm-vangogh-fix-kernel-memory-out-of-bounds-write.patch
 fs-9p-fix-uninitialized-values-during-inode-evict.patch
+leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch