mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
leds: mlxreg: Use devm_mutex_init() for mutex initialization
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>
This commit is contained in:
parent
310d26520e
commit
efc347b9ef
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user