svn commit: r356105 - stable/12/sys/dev/mii
Mark Johnston
markj at FreeBSD.org
Fri Dec 27 00:49:49 UTC 2019
Author: markj
Date: Fri Dec 27 00:49:49 2019
New Revision: 356105
URL: https://svnweb.freebsd.org/changeset/base/356105
Log:
MFC r355941:
mii(4): Fix ivars leak when the bus device or bus children detach.
PR: 242727
Modified:
stable/12/sys/dev/mii/mii.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/dev/mii/mii.c
==============================================================================
--- stable/12/sys/dev/mii/mii.c Thu Dec 26 23:06:28 2019 (r356104)
+++ stable/12/sys/dev/mii/mii.c Fri Dec 27 00:49:49 2019 (r356105)
@@ -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,13 +162,25 @@ 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
More information about the svn-src-stable-12
mailing list