media: gspca: Check the return value of write_bridge for timeout
authorAditya Pakki <pakki001@umn.edu>
Fri, 28 Dec 2018 18:37:36 +0000 (13:37 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 16 Jan 2019 16:25:56 +0000 (11:25 -0500)
In po1030_probe(), m5602_write_bridge() can timeout and return an error
value. The fix checks for the return value and propagates upstream
consistent with other usb drivers.

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

index 37d2891..5e43b47 100644 (file)
@@ -158,6 +158,7 @@ static const struct v4l2_ctrl_config po1030_greenbal_cfg = {
 
 int po1030_probe(struct sd *sd)
 {
+       int rc = 0;
        u8 dev_id_h = 0, i;
        struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
 
@@ -177,11 +178,14 @@ int po1030_probe(struct sd *sd)
        for (i = 0; i < ARRAY_SIZE(preinit_po1030); i++) {
                u8 data = preinit_po1030[i][2];
                if (preinit_po1030[i][0] == SENSOR)
-                       m5602_write_sensor(sd,
+                       rc |= m5602_write_sensor(sd,
                                preinit_po1030[i][1], &data, 1);
                else
-                       m5602_write_bridge(sd, preinit_po1030[i][1], data);
+                       rc |= m5602_write_bridge(sd, preinit_po1030[i][1],
+                                               data);
        }
+       if (rc < 0)
+               return rc;
 
        if (m5602_read_sensor(sd, PO1030_DEVID_H, &dev_id_h, 1))
                return -ENODEV;