linux_old1/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 [ARM] Remove asm/irq.h includes from ARM drivers 2006-01-09 13:56:42 +00:00
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 [CPUFREQ] CPU frequency display in /proc/cpuinfo 2005-12-06 19:35:11 -08:00
crypto [CRYPTO] Allow AES C/ASM implementations to coexist 2006-01-09 14:15:39 -08:00
dio [PATCH] drivers/dio: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
eisa [PATCH] drivers/eisa: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
fc4 [SPARC]: introduce a SPARC Kconfig symbol 2005-12-22 23:09:54 -08:00
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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2006-01-08 20:18:44 -08:00
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 [PATCH] x86: Fixed pnp bios limits 2006-01-06 08:33:35 -08:00
rapidio [PATCH] fix more missing includes 2006-01-08 20:13:45 -08:00
s390 [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
sbus [PATCH] sbus/char/uctrl: missing prototypes and NULL noise removal 2005-12-15 10:01:28 -08:00
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 [PATCH] superhyway: multiple block support and VCR rework 2005-11-07 07:53:28 -08:00
sn
tc [MIPS] zs.c: Resurrect the deceased zs.c for now. 2005-11-17 16:23:39 +00:00
telephony [PATCH] pcmcia: unify attach, EVENT_CARD_INSERTION handlers into one probe callback 2006-01-06 00:03:24 +01:00
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 [ARM] Move AMBA bus code to drivers/amba/ 2006-01-07 14:54:15 +00:00