[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160607130547.GA20617@lunn.ch>
Date: Tue, 7 Jun 2016 15:05:47 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Florian Fainelli <f.fainelli@...il.com>
Cc: netdev@...r.kernel.org, davem@...emlof.net,
vivien.didelot@...oirfairelinux.com
Subject: Re: [PATCH net-next v2 2/5] net: dsa: Initialize
ds->enabled_port_mask and ds->phys_mii_mask
On Tue, Jun 07, 2016 at 02:22:12AM +0200, Andrew Lunn wrote:
> > @@ -304,6 +312,18 @@ static int dsa_ds_apply(struct dsa_switch_tree *dst, struct dsa_switch *ds)
> > if (err < 0)
> > return err;
> >
> > + if (!ds->slave_mii_bus && ds->drv->phy_read) {
> > + ds->slave_mii_bus = devm_mdiobus_alloc(ds->dev);
> > + if (!ds->slave_mii_bus)
> > + return err;
> > +
> > + dsa_slave_mii_bus_init(ds);
> > +
> > + err = mdiobus_register(ds->slave_mii_bus);
> > + if (err < 0)
> > + return err;
> > + }
> > +
> > for (index = 0; index < DSA_MAX_PORTS; index++) {
> > port = ds->ports[index].dn;
> > if (!port)
>
> Hi Florian
...
> It is also missing the unregister in dsa_ds_unapply().
Looking at this again...
You use devm_mdiobus_alloc(), so the memory for the bus will get freed
eventually. However, it won't get unregistered before it is freed. So
an explicit unregister is needed. Doing that in dsa_ds_unapply() makes
sense, so we have a clear life cycle for this mdio bus.
Andrew
Powered by blists - more mailing lists