mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-03 05:15:32 +00:00
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 | ||
| pnic2.c | ||
| pnic.c | ||
| timer.c | ||
| tulip_core.c | ||
| tulip.h | ||
| uli526x.c | ||
| winbond-840.c | ||
| xircom_cb.c | ||
| xircom_tulip_cb.c | ||