mii(4): Fix ivars leak when the bus device or bus children detach.
PR: 242727 Submitted by: ghuckriede@blackberry.com MFC after: 1 week
This commit is contained in:
parent
0b57cec536
commit
fb3a540ba4
@ -60,6 +60,7 @@ MODULE_VERSION(miibus, 1);
|
||||
#include "miibus_if.h"
|
||||
|
||||
static device_attach_t miibus_attach;
|
||||
static bus_child_detached_t miibus_child_detached;
|
||||
static bus_child_location_str_t miibus_child_location_str;
|
||||
static bus_child_pnpinfo_str_t miibus_child_pnpinfo_str;
|
||||
static device_detach_t miibus_detach;
|
||||
@ -85,6 +86,7 @@ static device_method_t miibus_methods[] = {
|
||||
/* bus interface */
|
||||
DEVMETHOD(bus_print_child, miibus_print_child),
|
||||
DEVMETHOD(bus_read_ivar, miibus_read_ivar),
|
||||
DEVMETHOD(bus_child_detached, miibus_child_detached),
|
||||
DEVMETHOD(bus_child_pnpinfo_str, miibus_child_pnpinfo_str),
|
||||
DEVMETHOD(bus_child_location_str, miibus_child_location_str),
|
||||
DEVMETHOD(bus_hinted_child, miibus_hinted_child),
|
||||
@ -160,15 +162,27 @@ static int
|
||||
miibus_detach(device_t dev)
|
||||
{
|
||||
struct mii_data *mii;
|
||||
struct miibus_ivars *ivars;
|
||||
|
||||
ivars = device_get_ivars(dev);
|
||||
bus_generic_detach(dev);
|
||||
mii = device_get_softc(dev);
|
||||
ifmedia_removeall(&mii->mii_media);
|
||||
free(ivars, M_DEVBUF);
|
||||
mii->mii_ifp = NULL;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
miibus_child_detached(device_t dev, device_t child)
|
||||
{
|
||||
struct mii_attach_args *args;
|
||||
|
||||
args = device_get_ivars(child);
|
||||
free(args, M_DEVBUF);
|
||||
}
|
||||
|
||||
static int
|
||||
miibus_print_child(device_t dev, device_t child)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user