mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 07:51:16 -04:00
net: dsa: mv88e6xxx: Fix unconditional irq freeing
Trying to remove an IRQ domain that was not created results in an Opps. Add the necessary checks that the irqs were created before freeing them. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
a3db3d3a52
commit
46712644d6
@@ -3897,10 +3897,11 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev)
|
||||
out_mdio:
|
||||
mv88e6xxx_mdio_unregister(chip);
|
||||
out_g2_irq:
|
||||
if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT))
|
||||
if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT) && chip->irq > 0)
|
||||
mv88e6xxx_g2_irq_free(chip);
|
||||
out_g1_irq:
|
||||
mv88e6xxx_g1_irq_free(chip);
|
||||
if (chip->irq > 0)
|
||||
mv88e6xxx_g1_irq_free(chip);
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
@@ -3914,9 +3915,11 @@ static void mv88e6xxx_remove(struct mdio_device *mdiodev)
|
||||
mv88e6xxx_unregister_switch(chip);
|
||||
mv88e6xxx_mdio_unregister(chip);
|
||||
|
||||
if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT))
|
||||
mv88e6xxx_g2_irq_free(chip);
|
||||
mv88e6xxx_g1_irq_free(chip);
|
||||
if (chip->irq > 0) {
|
||||
if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT))
|
||||
mv88e6xxx_g2_irq_free(chip);
|
||||
mv88e6xxx_g1_irq_free(chip);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct of_device_id mv88e6xxx_of_match[] = {
|
||||
|
||||
Reference in New Issue
Block a user