PATCH: 3c59x 00:00:00:00:00:00 MAC failure

From: Alan Cox
Date: Wed Sep 29 2004 - 11:33:26 EST


The 3com EEPROM has a checksum but unfortunately it seems that a zapped
EEPROM returning all zero values passes the checksum test fine and we try
and use it.


--- drivers/net/3c59x.c~ 2004-09-29 17:23:42.964453264 +0100
+++ drivers/net/3c59x.c 2004-09-29 17:28:40.358242536 +0100
@@ -1295,6 +1295,13 @@
for (i = 0; i < 6; i++)
printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
}
+ /* Unfortunately an all zero eeprom passes the checksum and this
+ gets found in the wild in failure cases. Crypto is hard 8) */
+ if (memcmp(dev->dev_addr, "\0\0\0\0\0", 6) == 0) {
+ retval = -EINVAL;
+ printk(KERN_ERR "*** EEPROM MAC address is invalid.\n");
+ goto free_ring; /* With every pack */
+ }
EL3WINDOW(2);
for (i = 0; i < 6; i++)
outb(dev->dev_addr[i], ioaddr + i);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/