ath5k: don't change mac in eeprom_read_mac on error
Do not touch mac parameter passed to ath5k_eeprom_read_mac unless we are sure we have correct address. I.e. when returning error, do not change it. While at it, use '= {}' compiler trick for memsetting mac_d. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Acked-by: Nick Kossifidis <mickflemm@gmail.com> Cc: Luis R. Rodriguez <lrodriguez@atheros.com> Acked-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
2c91108c55
commit
8d6c39efed
|
@ -1418,14 +1418,11 @@ ath5k_eeprom_init(struct ath5k_hw *ah)
|
||||||
*/
|
*/
|
||||||
int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
|
int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
|
||||||
{
|
{
|
||||||
u8 mac_d[ETH_ALEN];
|
u8 mac_d[ETH_ALEN] = {};
|
||||||
u32 total, offset;
|
u32 total, offset;
|
||||||
u16 data;
|
u16 data;
|
||||||
int octet, ret;
|
int octet, ret;
|
||||||
|
|
||||||
memset(mac, 0, ETH_ALEN);
|
|
||||||
memset(mac_d, 0, ETH_ALEN);
|
|
||||||
|
|
||||||
ret = ath5k_hw_eeprom_read(ah, 0x20, &data);
|
ret = ath5k_hw_eeprom_read(ah, 0x20, &data);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1441,11 +1438,11 @@ int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
|
||||||
octet += 2;
|
octet += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(mac, mac_d, ETH_ALEN);
|
|
||||||
|
|
||||||
if (!total || total == 3 * 0xffff)
|
if (!total || total == 3 * 0xffff)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
memcpy(mac, mac_d, ETH_ALEN);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue