media: dvb-usb: fix uninit-value in dvb_usb_adapter_dvb_init
authorDongliang Mu <mudongliangabcd@gmail.com>
Fri, 25 Jun 2021 05:33:27 +0000 (07:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Sep 2021 09:42:59 +0000 (11:42 +0200)
[ Upstream commit c5453769f77ce19a5b03f1f49946fd3f8a374009 ]

If dibusb_read_eeprom_byte fails, the mac address is not initialized.
And nova_t_read_mac_address does not handle this failure, which leads to
the uninit-value in dvb_usb_adapter_dvb_init.

Fix this by handling the failure of dibusb_read_eeprom_byte.

Reported-by: syzbot+e27b4fd589762b0b9329@syzkaller.appspotmail.com
Fixes: 786baecfe78f ("[media] dvb-usb: move it to drivers/media/usb/dvb-usb")
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/usb/dvb-usb/nova-t-usb2.c

index 1babd334191069d30419e2c07fc25fd04e0931d4..016a6d1ad279b4fd093a6e3dba946bdf325774ac 100644 (file)
@@ -133,7 +133,7 @@ ret:
 
 static int nova_t_read_mac_address (struct dvb_usb_device *d, u8 mac[6])
 {
-       int i;
+       int i, ret;
        u8 b;
 
        mac[0] = 0x00;
@@ -142,7 +142,9 @@ static int nova_t_read_mac_address (struct dvb_usb_device *d, u8 mac[6])
 
        /* this is a complete guess, but works for my box */
        for (i = 136; i < 139; i++) {
-               dibusb_read_eeprom_byte(d,i, &b);
+               ret = dibusb_read_eeprom_byte(d, i, &b);
+               if (ret)
+                       return ret;
 
                mac[5 - (i - 136)] = b;
        }