|
@@ -1959,12 +1959,15 @@ static int atl2_get_eeprom(struct net_device *netdev,
|
|
|
return -ENOMEM;
|
|
|
|
|
|
for (i = first_dword; i < last_dword; i++) {
|
|
|
- if (!atl2_read_eeprom(hw, i*4, &(eeprom_buff[i-first_dword])))
|
|
|
- return -EIO;
|
|
|
+ if (!atl2_read_eeprom(hw, i*4, &(eeprom_buff[i-first_dword]))) {
|
|
|
+ ret_val = -EIO;
|
|
|
+ goto free;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 3),
|
|
|
eeprom->len);
|
|
|
+free:
|
|
|
kfree(eeprom_buff);
|
|
|
|
|
|
return ret_val;
|