media: gspca: mt9m111: Check write_bridge for timeout
authorAditya Pakki <pakki001@umn.edu>
Fri, 28 Dec 2018 18:51:10 +0000 (13:51 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 16 Jan 2019 16:27:10 +0000 (11:27 -0500)
In mt9m111_probe, m5602_write_bridge can timeout and return a negative
error value. The fix checks for this error and passes it upstream.

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/usb/gspca/m5602/m5602_mt9m111.c

index c9947c4..8fac814 100644 (file)
@@ -199,7 +199,7 @@ static const struct v4l2_ctrl_config mt9m111_greenbal_cfg = {
 int mt9m111_probe(struct sd *sd)
 {
        u8 data[2] = {0x00, 0x00};
-       int i;
+       int i, rc = 0;
        struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
 
        if (force_sensor) {
@@ -217,16 +217,18 @@ int mt9m111_probe(struct sd *sd)
        /* Do the preinit */
        for (i = 0; i < ARRAY_SIZE(preinit_mt9m111); i++) {
                if (preinit_mt9m111[i][0] == BRIDGE) {
-                       m5602_write_bridge(sd,
+                       rc |= m5602_write_bridge(sd,
                                preinit_mt9m111[i][1],
                                preinit_mt9m111[i][2]);
                } else {
                        data[0] = preinit_mt9m111[i][2];
                        data[1] = preinit_mt9m111[i][3];
-                       m5602_write_sensor(sd,
+                       rc |= m5602_write_sensor(sd,
                                preinit_mt9m111[i][1], data, 2);
                }
        }
+       if (rc < 0)
+               return rc;
 
        if (m5602_read_sensor(sd, MT9M111_SC_CHIPVER, data, 2))
                return -ENODEV;