Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac7198bb authored by Andy Fleming's avatar Andy Fleming Committed by Jeff Garzik
Browse files

gianfar: free/iounmap memory after an error in mii bus initialization

Recent changes to MII bus initialization code added exit points which
didn't free or iounmap the bus before returning.

Addresses http://bugzilla.kernel.org/show_bug.cgi?id=11372

.

Signed-off-by: default avatarAndy Fleming <afleming@freescale.com>
Reported-by: default avatarDaniel Marjamki <danielm77@spray.se>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent fbb80230
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -211,19 +211,21 @@ static int gfar_mdio_probe(struct device *dev)
	gfar_write(&enet_regs->tbipa, 0);
	for (i = PHY_MAX_ADDR; i > 0; i--) {
		u32 phy_id;
		int r;

		r = get_phy_id(new_bus, i, &phy_id);
		if (r)
			return r;
		err = get_phy_id(new_bus, i, &phy_id);
		if (err)
			goto bus_register_fail;

		if (phy_id == 0xffffffff)
			break;
	}

	/* The bus is full.  We don't support using 31 PHYs, sorry */
	if (i == 0)
		return -EBUSY;
	if (i == 0) {
		err = -EBUSY;

		goto bus_register_fail;
	}

	gfar_write(&enet_regs->tbipa, i);