From: Dale Farnsworth <[EMAIL PROTECTED]> This patch eliminates a spinlock recursion bug I introduced recently. Since eth_port_send() is always called with the lock held, we simply remove the locking inside the function itself.
Signed-off-by: Dale Farnsworth <[EMAIL PROTECTED]> drivers/net/mv643xx_eth.c | 13 ------------- 1 file changed, 13 deletions(-) Index: linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c =================================================================== --- linux-2.6-mv643xx_enet.orig/drivers/net/mv643xx_eth.c 2006-01-18 11:12:07.000000000 -0700 +++ linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c 2006-01-18 11:13:44.000000000 -0700 @@ -2617,7 +2617,6 @@ struct eth_tx_desc *current_descriptor; struct eth_tx_desc *first_descriptor; u32 command; - unsigned long flags; /* Do not process Tx ring in case of Tx ring resource error */ if (mp->tx_resource_err) @@ -2634,8 +2633,6 @@ return ETH_ERROR; } - spin_lock_irqsave(&mp->lock, flags); - mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); @@ -2685,15 +2682,11 @@ mp->tx_resource_err = 1; mp->tx_curr_desc_q = tx_first_desc; - spin_unlock_irqrestore(&mp->lock, flags); - return ETH_QUEUE_LAST_RESOURCE; } mp->tx_curr_desc_q = tx_next_desc; - spin_unlock_irqrestore(&mp->lock, flags); - return ETH_OK; } #else @@ -2704,14 +2697,11 @@ int tx_desc_used; struct eth_tx_desc *current_descriptor; unsigned int command_status; - unsigned long flags; /* Do not process Tx ring in case of Tx ring resource error */ if (mp->tx_resource_err) return ETH_QUEUE_FULL; - spin_lock_irqsave(&mp->lock, flags); - mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); @@ -2742,12 +2732,9 @@ /* Check for ring index overlap in the Tx desc ring */ if (tx_desc_curr == tx_desc_used) { mp->tx_resource_err = 1; - - spin_unlock_irqrestore(&mp->lock, flags); return ETH_QUEUE_LAST_RESOURCE; } - spin_unlock_irqrestore(&mp->lock, flags); return ETH_OK; } #endif - 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