From: Dale Farnsworth <[EMAIL PROTECTED]> We can't call request_irq() while holding a spin lock.
Signed-off-by: Dale Farnsworth <[EMAIL PROTECTED]> Index: linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c =================================================================== --- linux-2.6-mv643xx_enet.orig/drivers/net/mv643xx_eth.c +++ linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c @@ -655,34 +655,24 @@ static int mv643xx_eth_open(struct net_d unsigned int port_num = mp->port_num; int err; - spin_lock_irq(&mp->lock); - err = request_irq(dev->irq, mv643xx_eth_int_handler, SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev); - if (err) { printk(KERN_ERR "Can not assign IRQ number to MV643XX_eth%d\n", port_num); - err = -EAGAIN; - goto out; + return -EAGAIN; } + spin_lock_irq(&mp->lock); + if (mv643xx_eth_real_open(dev)) { printk("%s: Error opening interface\n", dev->name); + free_irq(dev->irq, dev); err = -EBUSY; - goto out_free; } spin_unlock_irq(&mp->lock); - return 0; - -out_free: - free_irq(dev->irq, dev); - -out: - spin_unlock_irq(&mp->lock); - return err; } - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html