leds: mlxreg: Use devm_mutex_init() for mutex initialization
PATCH 1/1 leds: mlxreg: Use devm_mutex_init() for mutex initialization
From: George Stark <[email protected]>
[ Upstream commit efc347b9efee1c2b081f5281d33be4559fa50a16 ]
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 <[email protected]>
Reviewed-by Andy Shevchenko <[email protected]>
Signed-off-by Lee Jones <[email protected]>
[ Resolve minor conflicts to fix CVE-2024-42129 ]
Signed-off-by Bin Lan <[email protected]>
--- drivers/leds/leds-mlxreg.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)
drivers/leds/leds-mlxreg.c +5 -11
@@ -257,6 +257,7 @@ static int mlxreg_led_probe(struct platform_device *pdev) {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 platform_device *pdev)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);
Signature · 1 line
2.43.0