linux/drivers
ODonnell, Michael ac7c66698a [PATCH] corruption during e100 MDI register access
We have identified two related bugs in the e100 driver.

Both bugs are related to manipulation of the MDI control register.

The first problem is that the Ready bit is being ignored when writing to
the Control register; we noticed this because the Linux bonding driver
would occasionally come to the spurious conclusion that the link was down
when querying Link State.  It turned out that by failing to wait for a
previous command to complete it was selecting what was essentially a random
register in the MDI register set.  When we added code that waits for the
Ready bit (as shown in the patch file below) all such problems ceased.

The second problem is that, although access to the MDI registers involves
multiple steps which must not be intermixed, nothing was defending against
two or more threads attempting simultaneous access.  The most obvious
situation where such interference could occur involves the watchdog versus
ioctl paths, but there are probably others, so we recommend the locking
shown in our patch file.

Signed-off-by: Michael O'Donnell <Michael.ODonnell@stratus.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jeff Garzik <jgarzik@pobox.com>
Cc: John Ronciak <john.ronciak@intel.com>
Cc: Ganesh Venkatesan <ganesh.venkatesan@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-12 16:31:51 -05:00
..
acorn [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
acpi [PATCH] i386: Handle missing local APIC timer interrupts on C3 state 2006-01-11 19:04:54 -08:00
amba
atm [ATM]: Remove unneeded kmalloc() return value casts + tiny whitespace cleanup 2006-01-10 13:09:01 -08:00
base [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-01-12 10:21:22 -08:00
bluetooth [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
cdrom [PATCH] powerpc: remove bitfields from HvLpEvent 2006-01-12 20:09:29 +11:00
char Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-01-12 10:21:22 -08:00
connector [PATCH] Switch getnstimestamp() calls to ktime_get_ts() 2006-01-10 08:01:39 -08:00
cpufreq
crypto [CRYPTO] Allow AES C/ASM implementations to coexist 2006-01-09 14:15:39 -08:00
dio
eisa
fc4
firmware [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
hwmon [PATCH] drivers/*rest*: Replace pci_module_init() with pci_register_driver() 2006-01-09 12:13:23 -08:00
i2c [ARM] 3237/1: PXA I2C driver updates 2006-01-12 16:30:23 +00:00
ide [PATCH] Revert ide softirq handling 2006-01-12 12:00:47 -08:00
ieee1394 [PATCH] don't include ioctl32.h in drivers 2006-01-10 08:01:34 -08:00
infiniband
input [PATCH] m68k: namespace pollution fix (custom->amiga_custom) 2006-01-12 09:09:00 -08:00
isdn [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
macintosh [PATCH] m68k: NULL noise removal 2006-01-12 09:09:04 -08:00
mca
md [PATCH] md: remove slashes from disk names when creation dev names in sysfs 2006-01-12 09:08:49 -08:00
media V4L/DVB (3354): VIDEO_SAA7134_ALSA shouldn't select SND_PCM_OSS 2006-01-12 00:37:59 -02:00
message [PATCH] don't include ioctl32.h in drivers 2006-01-10 08:01:34 -08:00
mfd [MMC+MFD] Convert mmc to mutexes 2006-01-12 18:43:35 +00:00
misc Input: ibmasm - fix input initialization error path 2006-01-10 02:00:39 -05:00
mmc [MMC+MFD] Convert mmc to mutexes 2006-01-12 18:43:35 +00:00
mtd [PATCH] turn "const static" into "static const" 2006-01-10 08:01:55 -08:00
net [PATCH] corruption during e100 MDI register access 2006-01-12 16:31:51 -05:00
nubus
oprofile [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parisc [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parport [PARISC] Fix parport_gsc by selecting PARPORT_NOT_PC 2006-01-10 21:52:25 -05:00
pci Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-01-09 18:41:42 -08:00
pcmcia Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-01-12 12:23:49 -08:00
pnp
rapidio
s390 [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
sbus
scsi [PATCH] m68k: fix PIO case in esp 2006-01-12 09:09:05 -08:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-01-12 12:23:49 -08:00
sh
sn
tc
telephony
usb [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
video [PATCH] m68k: fix macfb init 2006-01-12 09:09:05 -08:00
w1 spelling: s/usefull/useful/ 2006-01-10 00:08:17 +01:00
zorro [PATCH] m68k: zorro __user annotations 2006-01-12 09:09:04 -08:00
Kconfig
Makefile