]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
misc: apds990x: Fix missing pm_runtime_disable()
authorJinjie Ruan <ruanjinjie@huawei.com>
Mon, 23 Sep 2024 03:55:56 +0000 (11:55 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Oct 2024 15:10:53 +0000 (17:10 +0200)
The pm_runtime_disable() is missing in probe error path,
so add it to fix it.

Fixes: 92b1f84d46b2 ("drivers/misc: driver for APDS990X ALS and proximity sensors")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Link: https://lore.kernel.org/r/20240923035556.3009105-1-ruanjinjie@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/apds990x.c

index 6d4edd69db126a3ae55bc63a4e7984b3e40cb324..e7d73c972f65dc42520ac49c0d414b89fbccd88a 100644 (file)
@@ -1147,7 +1147,7 @@ static int apds990x_probe(struct i2c_client *client)
                err = chip->pdata->setup_resources();
                if (err) {
                        err = -EINVAL;
-                       goto fail3;
+                       goto fail4;
                }
        }
 
@@ -1155,7 +1155,7 @@ static int apds990x_probe(struct i2c_client *client)
                                apds990x_attribute_group);
        if (err < 0) {
                dev_err(&chip->client->dev, "Sysfs registration failed\n");
-               goto fail4;
+               goto fail5;
        }
 
        err = request_threaded_irq(client->irq, NULL,
@@ -1166,15 +1166,17 @@ static int apds990x_probe(struct i2c_client *client)
        if (err) {
                dev_err(&client->dev, "could not get IRQ %d\n",
                        client->irq);
-               goto fail5;
+               goto fail6;
        }
        return err;
-fail5:
+fail6:
        sysfs_remove_group(&chip->client->dev.kobj,
                        &apds990x_attribute_group[0]);
-fail4:
+fail5:
        if (chip->pdata && chip->pdata->release_resources)
                chip->pdata->release_resources();
+fail4:
+       pm_runtime_disable(&client->dev);
 fail3:
        regulator_bulk_disable(ARRAY_SIZE(chip->regs), chip->regs);
 fail2: