media: lgdt3306a: fix a missing check of return value
authorKangjie Lu <kjlu@umn.edu>
Thu, 20 Dec 2018 07:48:42 +0000 (02:48 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 16 Jan 2019 16:43:48 +0000 (11:43 -0500)
If lgdt3306a_read_reg() fails, the read data in "val" is incorrect, thus
shouldn't be further used. The fix inserts a check for the return value
of lgdt3306a_read_reg(). If it fails, goto fail.

Signed-off-by: Kangjie Lu <kjlu@umn.edu>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/dvb-frontends/lgdt3306a.c

index cee9c83e48de458203f07f02b2571bb0261c0a24..99c6289ae585ce3f49ccf8de38ffbf767eaff704 100644 (file)
@@ -1685,7 +1685,10 @@ static int lgdt3306a_read_signal_strength(struct dvb_frontend *fe,
        case QAM_256:
        case QAM_AUTO:
                /* need to know actual modulation to set proper SNR baseline */
-               lgdt3306a_read_reg(state, 0x00a6, &val);
+               ret = lgdt3306a_read_reg(state, 0x00a6, &val);
+               if (lg_chkerr(ret))
+                       goto fail;
+
                if(val & 0x04)
                        ref_snr = 2800; /* QAM-256 28dB */
                else