mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
leds: mlxreg: Use devm_mutex_init() for mutex initialization
[ Upstream commit efc347b9ef ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f6828e413f
commit
3b62888307
@@ -256,6 +256,7 @@ static int mlxreg_led_probe(struct platform_device *pdev)
|
|||||||
{
|
{
|
||||||
struct mlxreg_core_platform_data *led_pdata;
|
struct mlxreg_core_platform_data *led_pdata;
|
||||||
struct mlxreg_led_priv_data *priv;
|
struct mlxreg_led_priv_data *priv;
|
||||||
|
int err;
|
||||||
|
|
||||||
led_pdata = dev_get_platdata(&pdev->dev);
|
led_pdata = dev_get_platdata(&pdev->dev);
|
||||||
if (!led_pdata) {
|
if (!led_pdata) {
|
||||||
@@ -267,26 +268,21 @@ static int mlxreg_led_probe(struct platform_device *pdev)
|
|||||||
if (!priv)
|
if (!priv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
mutex_init(&priv->access_lock);
|
err = devm_mutex_init(&pdev->dev, &priv->access_lock);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
priv->pdev = pdev;
|
priv->pdev = pdev;
|
||||||
priv->pdata = led_pdata;
|
priv->pdata = led_pdata;
|
||||||
|
|
||||||
return mlxreg_led_config(priv);
|
return mlxreg_led_config(priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlxreg_led_remove(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
struct mlxreg_led_priv_data *priv = dev_get_drvdata(&pdev->dev);
|
|
||||||
|
|
||||||
mutex_destroy(&priv->access_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct platform_driver mlxreg_led_driver = {
|
static struct platform_driver mlxreg_led_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "leds-mlxreg",
|
.name = "leds-mlxreg",
|
||||||
},
|
},
|
||||||
.probe = mlxreg_led_probe,
|
.probe = mlxreg_led_probe,
|
||||||
.remove_new = mlxreg_led_remove,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module_platform_driver(mlxreg_led_driver);
|
module_platform_driver(mlxreg_led_driver);
|
||||||
|
|||||||
Reference in New Issue
Block a user