sky2: fix missing register reset on error path in sky2_test_msi()
authorLino Sanfilippo <LinoSanfilippo@gmx.de>
Fri, 30 Mar 2012 07:36:16 +0000 (07:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Apr 2012 21:06:38 +0000 (17:06 -0400)
In sky2_test_msi() the temporarily set SW IRQ in B0 register is not reset in case
that request_irq() fails.
With this patch we only set the interrupt mask if request_irq() was successful.

Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/sky2.c

index 423a1a2..20a5932 100644 (file)
@@ -4804,14 +4804,14 @@ static int __devinit sky2_test_msi(struct sky2_hw *hw)
 
        init_waitqueue_head(&hw->msi_wait);
 
-       sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW);
-
        err = request_irq(pdev->irq, sky2_test_intr, 0, DRV_NAME, hw);
        if (err) {
                dev_err(&pdev->dev, "cannot assign irq %d\n", pdev->irq);
                return err;
        }
 
+       sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW);
+
        sky2_write8(hw, B0_CTST, CS_ST_SW_IRQ);
        sky2_read8(hw, B0_CTST);