]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
media: mt9m111: Fix error handling in mt9m111_power_on
authorSakari Ailus <sakari.ailus@linux.intel.com>
Fri, 31 May 2019 20:12:49 +0000 (16:12 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 24 Jun 2019 15:12:16 +0000 (11:12 -0400)
The mt9m111_power_on function did not properly clean up whenever it
encountered an error. Do that now.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/i2c/mt9m111.c

index bb19f8c346cb6a4724c32c2027963e15cc1f36ea..593ebe5e2cb647321acb1f0c65bcb60b78b3f9fd 100644 (file)
@@ -986,13 +986,21 @@ static int mt9m111_power_on(struct mt9m111 *mt9m111)
 
        ret = regulator_enable(mt9m111->regulator);
        if (ret < 0)
-               return ret;
+               goto out_clk_disable;
 
        ret = mt9m111_resume(mt9m111);
-       if (ret < 0) {
-               dev_err(&client->dev, "Failed to resume the sensor: %d\n", ret);
-               v4l2_clk_disable(mt9m111->clk);
-       }
+       if (ret < 0)
+               goto out_regulator_disable;
+
+       return 0;
+
+out_regulator_disable:
+       regulator_disable(mt9m111->regulator);
+
+out_clk_disable:
+       v4l2_clk_disable(mt9m111->clk);
+
+       dev_err(&client->dev, "Failed to resume the sensor: %d\n", ret);
 
        return ret;
 }