Skip to content

Commit

Permalink
ipg: balance locking in irq handler
Browse files Browse the repository at this point in the history
Spotted-by: <linux@horizon.com>
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
  • Loading branch information
Francois Romieu committed Jan 17, 2008
1 parent d8c89eb commit 227bc24
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/net/ipg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1630,6 +1630,8 @@ static irqreturn_t ipg_interrupt_handler(int irq, void *dev_inst)
#ifdef JUMBO_FRAME
ipg_nic_rxrestore(dev);
#endif
spin_lock(&sp->lock);

/* Get interrupt source information, and acknowledge
* some (i.e. TxDMAComplete, RxDMAComplete, RxEarly,
* IntRequested, MacControlFrame, LinkEvent) interrupts
Expand All @@ -1647,9 +1649,7 @@ static irqreturn_t ipg_interrupt_handler(int irq, void *dev_inst)
handled = 1;

if (unlikely(!netif_running(dev)))
goto out;

spin_lock(&sp->lock);
goto out_unlock;

/* If RFDListEnd interrupt, restore all used RFDs. */
if (status & IPG_IS_RFD_LIST_END) {
Expand Down Expand Up @@ -1733,9 +1733,9 @@ static irqreturn_t ipg_interrupt_handler(int irq, void *dev_inst)
ipg_w16(IPG_IE_TX_DMA_COMPLETE | IPG_IE_RX_DMA_COMPLETE |
IPG_IE_HOST_ERROR | IPG_IE_INT_REQUESTED | IPG_IE_TX_COMPLETE |
IPG_IE_LINK_EVENT | IPG_IE_UPDATE_STATS, INT_ENABLE);

out_unlock:
spin_unlock(&sp->lock);
out:

return IRQ_RETVAL(handled);
}

Expand Down

0 comments on commit 227bc24

Please sign in to comment.