[media] v4l: mt9t001: fix clean up in case of power-on failures
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Mon, 14 Dec 2015 09:58:29 +0000 (07:58 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 28 Jun 2016 10:55:39 +0000 (07:55 -0300)
If the driver fails to reset the camera or to set up control handlers, it
has to power the camera back off.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/i2c/mt9t001.c

index 16b8c702cf130479945f57188198ac226a65a37d..842017fa4aab5cdda0be070666d13b2ca1d72f79 100644 (file)
@@ -233,10 +233,21 @@ static int __mt9t001_set_power(struct mt9t001 *mt9t001, bool on)
        ret = mt9t001_reset(mt9t001);
        if (ret < 0) {
                dev_err(&client->dev, "Failed to reset the camera\n");
-               return ret;
+               goto e_power;
        }
 
-       return v4l2_ctrl_handler_setup(&mt9t001->ctrls);
+       ret = v4l2_ctrl_handler_setup(&mt9t001->ctrls);
+       if (ret < 0) {
+               dev_err(&client->dev, "Failed to set up control handlers\n");
+               goto e_power;
+       }
+
+       return 0;
+
+e_power:
+       mt9t001_power_off(mt9t001);
+
+       return ret;
 }
 
 /* -----------------------------------------------------------------------------