media: dvb-frontends: mb86a16.c: always use the same error path
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 26 Jan 2023 13:46:49 +0000 (14:46 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Wed, 8 Feb 2023 07:40:13 +0000 (08:40 +0100)
If the message length was wrong, the dprintk() after the 'err' label
was bypassed. Fix that, and fix a smatch warning at the same time:

mb86a16.c:1514 mb86a16_send_diseqc_msg() warn: missing unwind goto?

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/dvb-frontends/mb86a16.c

index 2505f1e5794e78f719f119faf1260ba83799e79f..d3e29937cf4cfa71d1a8408d99889b2c92f0ce4d 100644 (file)
@@ -1498,6 +1498,7 @@ static int mb86a16_send_diseqc_msg(struct dvb_frontend *fe,
                                   struct dvb_diseqc_master_cmd *cmd)
 {
        struct mb86a16_state *state = fe->demodulator_priv;
+       int ret = -EREMOTEIO;
        int i;
        u8 regs;
 
@@ -1510,8 +1511,10 @@ static int mb86a16_send_diseqc_msg(struct dvb_frontend *fe,
 
        regs = 0x18;
 
-       if (cmd->msg_len > 5 || cmd->msg_len < 4)
-               return -EINVAL;
+       if (cmd->msg_len > 5 || cmd->msg_len < 4) {
+               ret = -EINVAL;
+               goto err;
+       }
 
        for (i = 0; i < cmd->msg_len; i++) {
                if (mb86a16_write(state, regs, cmd->msg[i]) < 0)
@@ -1532,7 +1535,7 @@ static int mb86a16_send_diseqc_msg(struct dvb_frontend *fe,
 
 err:
        dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
-       return -EREMOTEIO;
+       return ret;
 }
 
 static int mb86a16_send_diseqc_burst(struct dvb_frontend *fe,