net: dsa: mv88e6xxx: Free ATU/VTU irq only when there is chip irq
authorAndrew Lunn <andrew@lunn.ch>
Thu, 18 Jan 2018 16:42:50 +0000 (17:42 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Jan 2018 20:57:02 +0000 (15:57 -0500)
We only register the ATU and VTU irq when we have a chip level IRQ.
In the error path, we should only attempt to remove the ATU and VTU
irq if we also have a chip level IRQ.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c

index 54cb00a274083784545743fa20745c871351e8f0..eb328bade225187ffc745573cfff5741af66e46d 100644 (file)
@@ -3999,9 +3999,11 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev)
 out_mdio:
        mv88e6xxx_mdios_unregister(chip);
 out_g1_vtu_prob_irq:
-       mv88e6xxx_g1_vtu_prob_irq_free(chip);
+       if (chip->irq > 0)
+               mv88e6xxx_g1_vtu_prob_irq_free(chip);
 out_g1_atu_prob_irq:
-       mv88e6xxx_g1_atu_prob_irq_free(chip);
+       if (chip->irq > 0)
+               mv88e6xxx_g1_atu_prob_irq_free(chip);
 out_g2_irq:
        if (chip->info->g2_irqs > 0 && chip->irq > 0)
                mv88e6xxx_g2_irq_free(chip);