aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e
diff options
context:
space:
mode:
authorKok, Auke <auke-jan.h.kok@intel.com>2008-04-29 11:18:55 -0700
committerJeff Garzik <jgarzik@redhat.com>2008-05-06 12:38:02 -0400
commitf227ec3ca2b7be449fb2156e82b40cceed87a34a (patch)
treebf71b460b90b059bfc1192c001f676fd02a8afc2 /drivers/net/e1000e
parente410553fd35afd6d290b65e02dc501722406377d (diff)
downloadkernel_samsung_tuna-f227ec3ca2b7be449fb2156e82b40cceed87a34a.zip
kernel_samsung_tuna-f227ec3ca2b7be449fb2156e82b40cceed87a34a.tar.gz
kernel_samsung_tuna-f227ec3ca2b7be449fb2156e82b40cceed87a34a.tar.bz2
e1000e: don't return half-read eeprom on error
On a read error, e1000e might have returned uninitialized block of eeprom data back to userspace. The convention is that 0xff is "empty", so mark the entire eeprom as empty in case of an error. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/e1000e')
-rw-r--r--drivers/net/e1000e/ethtool.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
index 2bb6da0..a14561f 100644
--- a/drivers/net/e1000e/ethtool.c
+++ b/drivers/net/e1000e/ethtool.c
@@ -494,8 +494,12 @@ static int e1000_get_eeprom(struct net_device *netdev,
for (i = 0; i < last_word - first_word + 1; i++) {
ret_val = e1000_read_nvm(hw, first_word + i, 1,
&eeprom_buff[i]);
- if (ret_val)
+ if (ret_val) {
+ /* a read error occurred, throw away the
+ * result */
+ memset(eeprom_buff, 0xff, sizeof(eeprom_buff));
break;
+ }
}
}