net: kernel BUG at drivers/net/phy/mdio_bus.c:165!
authorKrzysztof Halasa <khc@pm.waw.pl>
Wed, 17 Dec 2008 08:24:13 +0000 (00:24 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Dec 2008 08:24:13 +0000 (00:24 -0800)
commite8e5752dc0a56a01527055b0c37510b1d6b6b861
tree65066b89fe67651445f25d586db615c3fbbcf81c
parent9a3de25544dadab1971847f28f33b1cd0d1770a6
net: kernel BUG at drivers/net/phy/mdio_bus.c:165!

kernel BUG at drivers/net/phy/mdio_bus.c:165!
Unable to handle kernel NULL pointer dereference at virtual address 00000000

How?

mdiobus_alloc() sets bus->state = MDIOBUS_ALLOCATED.

mdiobus_register() sets bus->state = MDIOBUS_REGISTERED but then can
   fail (mdiobus_scan()) returning an error to the caller.

The caller aborts correctly with mdiobus_free() which does:
        if (bus->state == MDIOBUS_ALLOCATED) {
                kfree(bus);
                return;
        }

        BUG_ON(bus->state != MDIOBUS_UNREGISTERED);

Signed-off-by: Krzysztof Halasa <khc@pm.waw.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio_bus.c