209261c019
If "location" is > "addr_len" bits, the high bits of location would interfere with the READ_CMD sent to the eeprom controller. A patch was submitted to bug: http://bugzilla.kernel.org/show_bug.cgi?id=4420 which simply truncated the "location", read whatever was in "location modulo addr_len", and returned that value. That avoids confusing the eeprom but seems like the wrong solution to me. Correct would be to not read beyond "1 << addr_len" address of the eeprom. I am submitting two changes to implement this: 1) tulip_read_eeprom will return zero (since we can't return -EINVAL) if this is attempted (defensive programming). 2) In tulip_core.c, fix the tulip_read_eeprom caller so they don't iterate past addr_len bits and make sure the entire tp->eeprom[] array is cleared. I konw we don't strictly need both. I would prefer both in the tree since it documents the issue and provides a second "defense" from the bug from creeping back in. Signed-off-by: Grant Grundler <grundler@parisc-linux.org> Signed-off-by: Jeff Garzik <jeff@garzik.org> |
||
---|---|---|
.. | ||
21142.c | ||
de4x5.c | ||
de4x5.h | ||
de2104x.c | ||
dmfe.c | ||
eeprom.c | ||
interrupt.c | ||
Kconfig | ||
Makefile | ||
media.c | ||
pnic.c | ||
pnic2.c | ||
timer.c | ||
tulip.h | ||
tulip_core.c | ||
uli526x.c | ||
winbond-840.c | ||
xircom_cb.c | ||
xircom_tulip_cb.c |