Patch from Jason Lunz When support for the GSET and SSET ethtool ioctls was added to eepro100.c in 2.4.20, the tx lock was overloaded to serialize their use. Unfortunately, this lock is only initialized in dev->open(), causing ethtool to deadlock the machine when used on an unconfigured eepro100 interface. The fix is to initialize the spinlock at probe time. Jeff, the patch below is against 2.4.21-pre5, but I'm assuming you'll integrate it into 2.5 and push it to Linus as well as Marcelo. It applies to both trees. 25-akpm/drivers/net/eepro100.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/net/eepro100.c~eepro100-lockup-fix drivers/net/eepro100.c --- 25/drivers/net/eepro100.c~eepro100-lockup-fix Fri Mar 7 14:06:46 2003 +++ 25-akpm/drivers/net/eepro100.c Fri Mar 7 14:06:46 2003 @@ -843,6 +843,7 @@ static int __devinit speedo_found1(struc sp->lstats = (struct speedo_stats *)(sp->tx_ring + TX_RING_SIZE); sp->lstats_dma = TX_RING_ELEM_DMA(sp, TX_RING_SIZE); init_timer(&sp->timer); /* used in ioctl() */ + spin_lock_init(&sp->lock); sp->mii_if.full_duplex = option >= 0 && (option & 0x10) ? 1 : 0; if (card_idx >= 0) { @@ -994,7 +995,6 @@ speedo_open(struct net_device *dev) sp->dirty_tx = 0; sp->last_cmd = 0; sp->tx_full = 0; - spin_lock_init(&sp->lock); sp->in_interrupt = 0; /* .. we can safely take handler calls during init. */ _