In sc27xx_led_probe() there's one error branch missing mutex_destory()
after mutex_init(), it seems that we should add it since other branches
which follow it called mutex_destoy() before return failure.
Fixes: e081c49e30ec ("leds: Add Spreadtrum SC27xx breathing light controller driver")
Signed-off-by: Chunyan Zhang <[email protected]>
---
drivers/leds/leds-sc27xx-bltc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/leds/leds-sc27xx-bltc.c b/drivers/leds/leds-sc27xx-bltc.c
index e199ea15e406..122094bbf444 100644
--- a/drivers/leds/leds-sc27xx-bltc.c
+++ b/drivers/leds/leds-sc27xx-bltc.c
@@ -300,6 +300,7 @@ static int sc27xx_led_probe(struct platform_device *pdev)
priv->base = base;
priv->regmap = dev_get_regmap(dev->parent, NULL);
if (!priv->regmap) {
+ mutex_destroy(&priv->lock);
err = -ENODEV;
dev_err(dev, "failed to get regmap: %d\n", err);
return err;
--
2.41.0
On Thu, 21 Sep 2023, Chunyan Zhang wrote:
> In sc27xx_led_probe() there's one error branch missing mutex_destory()
> after mutex_init(), it seems that we should add it since other branches
> which follow it called mutex_destoy() before return failure.
Wouldn't it be better to move the mutex_init() to the end of .probe()?
> Fixes: e081c49e30ec ("leds: Add Spreadtrum SC27xx breathing light controller driver")
> Signed-off-by: Chunyan Zhang <[email protected]>
> ---
> drivers/leds/leds-sc27xx-bltc.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/leds/leds-sc27xx-bltc.c b/drivers/leds/leds-sc27xx-bltc.c
> index e199ea15e406..122094bbf444 100644
> --- a/drivers/leds/leds-sc27xx-bltc.c
> +++ b/drivers/leds/leds-sc27xx-bltc.c
> @@ -300,6 +300,7 @@ static int sc27xx_led_probe(struct platform_device *pdev)
> priv->base = base;
> priv->regmap = dev_get_regmap(dev->parent, NULL);
> if (!priv->regmap) {
> + mutex_destroy(&priv->lock);
> err = -ENODEV;
> dev_err(dev, "failed to get regmap: %d\n", err);
> return err;
> --
> 2.41.0
>
--
Lee Jones [李琼斯]