staging: r8188eu: always initialise efuse buffer with 0xff
authorMartin Kaiser <martin@kaiser.cx>
Sat, 9 Jul 2022 17:09:52 +0000 (19:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Jul 2022 08:06:45 +0000 (10:06 +0200)
If BOOT_FROM_EEPROM is set, efuse_buf is not initialised before it is
passed to functions that read from it.

The buffer will be filled with 0x00 in this case like all local variables.
However, the parsing functions expect the buffer to be filled with 0xFF if
reading eeprom/efuse data failed. Fill the buffer with 0xFF before we try
to read the data.

Please note that this problem existed before we started using a local
buffer. Adapter->eeprompriv->efuse_eeprom_data was allocated as a part of
struct adapter by a vzalloc call in rtw_usb_if1_init.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220709171000.180481-7-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/hal/usb_halinit.c

index 32f25312ffd7fc9ba9e416f66f32334ce47f8421..16ac5b49459a397db781691736c814aef53d2165 100644 (file)
@@ -940,14 +940,12 @@ void ReadAdapterInfo8188EU(struct adapter *Adapter)
 
        eeprom->bautoload_fail_flag     = !(eeValue & EEPROM_EN);
 
-       if (!(eeValue & BOOT_FROM_EEPROM)) {
-               if (eeprom->bautoload_fail_flag) {
-                       memset(efuse_buf, 0xFF, sizeof(efuse_buf));
-               } else {
-                       rtl8188e_EfusePowerSwitch(Adapter, true);
-                       rtl8188e_ReadEFuse(Adapter, 0, EFUSE_MAP_LEN_88E, efuse_buf);
-                       rtl8188e_EfusePowerSwitch(Adapter, false);
-               }
+       memset(efuse_buf, 0xFF, sizeof(efuse_buf));
+
+       if (!(eeValue & BOOT_FROM_EEPROM) && !eeprom->bautoload_fail_flag) {
+               rtl8188e_EfusePowerSwitch(Adapter, true);
+               rtl8188e_ReadEFuse(Adapter, 0, EFUSE_MAP_LEN_88E, efuse_buf);
+               rtl8188e_EfusePowerSwitch(Adapter, false);
        }
 
        /* parse the eeprom/efuse content */