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>
        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;
 }
 
 /* -----------------------------------------------------------------------------