summaryrefslogtreecommitdiff
path: root/drivers/media/usb/gspca/m5602/m5602_po1030.c
diff options
context:
space:
mode:
authorAditya Pakki <pakki001@umn.edu>2018-12-28 21:37:36 +0300
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-01-16 19:25:56 +0300
commita21a0eb56b4e8fe4a330243af8030f890cde2283 (patch)
tree1db7ecc4d47e347c1372f02a9e0d201c9141e5ad /drivers/media/usb/gspca/m5602/m5602_po1030.c
parent5b711870bec4dc9a6d705d41e127e73944fa3650 (diff)
downloadlinux-a21a0eb56b4e8fe4a330243af8030f890cde2283.tar.xz
media: gspca: Check the return value of write_bridge for timeout
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>
Diffstat (limited to 'drivers/media/usb/gspca/m5602/m5602_po1030.c')
-rw-r--r--drivers/media/usb/gspca/m5602/m5602_po1030.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/media/usb/gspca/m5602/m5602_po1030.c b/drivers/media/usb/gspca/m5602/m5602_po1030.c
index 37d2891e5f5b..5e43b4782f02 100644
--- a/drivers/media/usb/gspca/m5602/m5602_po1030.c
+++ b/drivers/media/usb/gspca/m5602/m5602_po1030.c
@@ -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;