From: Greg Kroah-Hartman Date: Tue, 19 Nov 2024 13:17:34 +0000 (+0100) Subject: 6.6-stable patches X-Git-Tag: v6.12.1~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=af0be57617a0592d520df49b1393cd1dbe9f0118;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch --- 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 index 00000000000..cfe15f4051c --- /dev/null +++ b/queue-6.6/leds-mlxreg-use-devm_mutex_init-for-mutex-initialization.patch @@ -0,0 +1,69 @@ +From efc347b9efee1c2b081f5281d33be4559fa50a16 Mon Sep 17 00:00:00 2001 +From: George Stark +Date: Thu, 11 Apr 2024 19:10:31 +0300 +Subject: leds: mlxreg: Use devm_mutex_init() for mutex initialization + +From: George Stark + +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 +Reviewed-by: Andy Shevchenko +Link: https://lore.kernel.org/r/20240411161032.609544-8-gnstark@salutedevices.com +Signed-off-by: Lee Jones +[ Resolve minor conflicts to fix CVE-2024-42129 ] +Signed-off-by: Bin Lan +Signed-off-by: Greg Kroah-Hartman +--- + 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); diff --git a/queue-6.6/series b/queue-6.6/series index 283e6c1fd59..d68b638edf8 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -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