media: xc4000: don't ignore error if hwmodel fails
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 1 Nov 2017 21:05:47 +0000 (17:05 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 11 Dec 2017 18:04:52 +0000 (13:04 -0500)
If, for some reason, reading the hwmodel register on
xc4000 fails, it will cause the following logig to
use a random value, as reported by smatch:

drivers/media/tuners/xc4000.c:1047 check_firmware() error: uninitialized symbol 'hwmodel'.
drivers/media/tuners/xc4000.c:1060 check_firmware() error: uninitialized symbol 'hwmodel'.
drivers/media/tuners/xc4000.c:1064 check_firmware() error: uninitialized symbol 'hwmodel'.

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

index e30948e..2113ce5 100644 (file)
@@ -1036,7 +1036,10 @@ skip_std_specific:
                dprintk(1, "load scode failed %d\n", rc);
 
 check_device:
-       rc = xc4000_readreg(priv, XREG_PRODUCT_ID, &hwmodel);
+       if (xc4000_readreg(priv, XREG_PRODUCT_ID, &hwmodel) < 0) {
+               printk(KERN_ERR "Unable to read tuner registers.\n");
+               goto fail;
+       }
 
        if (xc_get_version(priv, &hw_major, &hw_minor, &fw_major,
                           &fw_minor) != 0) {