From: Roland Dreier <[EMAIL PROTECTED]> Date: Mon, 05 Jun 2006 21:44:01 -0700
> > IPOIB is going to BUG() with this change. Because now, in their > > multicast code, you're going to local_bh_disable() via > > netif_tx_unlock() with hw IRQs disabled which is illegal. > > > > It shows a bug here in the locking of the IPOIB driver. > > Sorry, I haven't followed this thread closely. Can you expand on what > the bug in ipoib's multicast locking is? It disables hw interrupts, and takes the xmit_lock. xmit_lock is a BH only spinlock, you can't take it from hw interrupts, or inside of a HW irq protected spinlock. You can take it on the outside of a HW irq lock protected area like this: spin_lock_bh(&dev->xmit_lock); spin_lock_irq(&whatever_lock); spin_unlock_irq(&whatever_lock); spin_unlock_bh(&dev->xmit_lock); but not the other way around. - 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