media: ir-kbd-i2c: improve error handling code
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 23 Mar 2018 11:10:12 +0000 (07:10 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 23 Mar 2018 11:10:12 +0000 (07:10 -0400)
The current I2C error handling logic makes static analyzers
confused, and it doesn't follow the coding style we're using:

drivers/media/i2c/ir-kbd-i2c.c:180 get_key_pixelview() error: uninitialized symbol 'b'.
drivers/media/i2c/ir-kbd-i2c.c:224 get_key_knc1() error: uninitialized symbol 'b'.
drivers/media/i2c/ir-kbd-i2c.c:226 get_key_knc1() error: uninitialized symbol 'b'.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/i2c/ir-kbd-i2c.c

index 193020d64e519e6659df15eb5259152a3f7aea07..1d11aab1817a446b928c7ad68b440c4fad5a3321 100644 (file)
@@ -168,11 +168,15 @@ static int get_key_haup_xvr(struct IR_i2c *ir, enum rc_proto *protocol,
 static int get_key_pixelview(struct IR_i2c *ir, enum rc_proto *protocol,
                             u32 *scancode, u8 *toggle)
 {
+       int rc;
        unsigned char b;
 
        /* poll IR chip */
-       if (1 != i2c_master_recv(ir->c, &b, 1)) {
+       rc = i2c_master_recv(ir->c, &b, 1);
+       if (rc != 1) {
                dev_dbg(&ir->rc->dev, "read error\n");
+               if (rc < 0)
+                       return rc;
                return -EIO;
        }
 
@@ -185,11 +189,15 @@ static int get_key_pixelview(struct IR_i2c *ir, enum rc_proto *protocol,
 static int get_key_fusionhdtv(struct IR_i2c *ir, enum rc_proto *protocol,
                              u32 *scancode, u8 *toggle)
 {
+       int rc;
        unsigned char buf[4];
 
        /* poll IR chip */
-       if (4 != i2c_master_recv(ir->c, buf, 4)) {
+       rc = i2c_master_recv(ir->c, buf, 4);
+       if (rc != 4) {
                dev_dbg(&ir->rc->dev, "read error\n");
+               if (rc < 0)
+                       return rc;
                return -EIO;
        }
 
@@ -209,11 +217,15 @@ static int get_key_fusionhdtv(struct IR_i2c *ir, enum rc_proto *protocol,
 static int get_key_knc1(struct IR_i2c *ir, enum rc_proto *protocol,
                        u32 *scancode, u8 *toggle)
 {
+       int rc;
        unsigned char b;
 
        /* poll IR chip */
-       if (1 != i2c_master_recv(ir->c, &b, 1)) {
+       rc = i2c_master_recv(ir->c, &b, 1);
+       if (rc != 1) {
                dev_dbg(&ir->rc->dev, "read error\n");
+               if (rc < 0)
+                       return rc;
                return -EIO;
        }