ath5k: don't change mac in eeprom_read_mac on error
authorJiri Slaby <jirislaby@gmail.com>
Sat, 7 Mar 2009 09:26:42 +0000 (10:26 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Mar 2009 22:09:36 +0000 (18:09 -0400)
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>
drivers/net/wireless/ath5k/eeprom.c

index a54ee7e..ac45ca4 100644 (file)
@@ -1418,14 +1418,11 @@ ath5k_eeprom_init(struct ath5k_hw *ah)
  */
 int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
 {
-       u8 mac_d[ETH_ALEN];
+       u8 mac_d[ETH_ALEN] = {};
        u32 total, offset;
        u16 data;
        int octet, ret;
 
-       memset(mac, 0, ETH_ALEN);
-       memset(mac_d, 0, ETH_ALEN);
-
        ret = ath5k_hw_eeprom_read(ah, 0x20, &data);
        if (ret)
                return ret;
@@ -1441,11 +1438,11 @@ int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
                octet += 2;
        }
 
-       memcpy(mac, mac_d, ETH_ALEN);
-
        if (!total || total == 3 * 0xffff)
                return -EINVAL;
 
+       memcpy(mac, mac_d, ETH_ALEN);
+
        return 0;
 }