Commit c8a38b29 authored by David S. Miller's avatar David S. Miller

[SUNGEM]: Fix locking in gem_interrupt().

Do not release lock unless actually taken.
Noticed by Eric Lemoine.
Signed-off-by: default avatarDavid S. Miller <davem@redhat.com>
parent 455aef82
...@@ -808,16 +808,16 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -808,16 +808,16 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (gem_status & GREG_STAT_ABNORMAL) { if (gem_status & GREG_STAT_ABNORMAL) {
if (gem_abnormal_irq(dev, gp, gem_status)) if (gem_abnormal_irq(dev, gp, gem_status))
goto out; goto out_unlock;
} }
if (gem_status & (GREG_STAT_TXALL | GREG_STAT_TXINTME)) if (gem_status & (GREG_STAT_TXALL | GREG_STAT_TXINTME))
gem_tx(dev, gp, gem_status); gem_tx(dev, gp, gem_status);
if (gem_status & GREG_STAT_RXDONE) if (gem_status & GREG_STAT_RXDONE)
gem_rx(gp); gem_rx(gp);
out: out_unlock:
spin_unlock(&gp->lock); spin_unlock(&gp->lock);
out:
return IRQ_HANDLED; return IRQ_HANDLED;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment