From: Akinobu Mita <akinobu.m...@gmail.com>

[ Upstream commit 30f3b17eaf4913e9e56be15915ce57aae69db701 ]

This change adds checks for register read errors and returns correct
error code.

Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Cc: Hans Verkuil <hans.verk...@cisco.com>
Reviewed-by: Jacopo Mondi <jac...@jmondi.org>
Signed-off-by: Akinobu Mita <akinobu.m...@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+sams...@kernel.org>
Signed-off-by: Sasha Levin <alexander.le...@microsoft.com>
---
 drivers/media/i2c/ov772x.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index e2550708abc8..ef6581e56753 100644
--- a/drivers/media/i2c/ov772x.c
+++ b/drivers/media/i2c/ov772x.c
@@ -1136,7 +1136,7 @@ static int ov772x_set_fmt(struct v4l2_subdev *sd,
 static int ov772x_video_probe(struct ov772x_priv *priv)
 {
        struct i2c_client  *client = v4l2_get_subdevdata(&priv->subdev);
-       u8                  pid, ver;
+       int                 pid, ver, midh, midl;
        const char         *devname;
        int                 ret;
 
@@ -1146,7 +1146,11 @@ static int ov772x_video_probe(struct ov772x_priv *priv)
 
        /* Check and show product ID and manufacturer ID. */
        pid = ov772x_read(client, PID);
+       if (pid < 0)
+               return pid;
        ver = ov772x_read(client, VER);
+       if (ver < 0)
+               return ver;
 
        switch (VERSION(pid, ver)) {
        case OV7720:
@@ -1162,13 +1166,17 @@ static int ov772x_video_probe(struct ov772x_priv *priv)
                goto done;
        }
 
+       midh = ov772x_read(client, MIDH);
+       if (midh < 0)
+               return midh;
+       midl = ov772x_read(client, MIDL);
+       if (midl < 0)
+               return midl;
+
        dev_info(&client->dev,
                 "%s Product ID %0x:%0x Manufacturer ID %x:%x\n",
-                devname,
-                pid,
-                ver,
-                ov772x_read(client, MIDH),
-                ov772x_read(client, MIDL));
+                devname, pid, ver, midh, midl);
+
        ret = v4l2_ctrl_handler_setup(&priv->hdl);
 
 done:
-- 
2.17.1

Reply via email to