[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20151029140058.GS2307@lunn.ch>
Date: Thu, 29 Oct 2015 15:00:58 +0100
From: Andrew Lunn <andrew@...n.ch>
To: Neil Armstrong <narmstrong@...libre.com>
Cc: "David S. Miller" <davem@...emloft.net>,
Florian Fainelli <f.fainelli@...il.com>,
Guenter Roeck <linux@...ck-us.net>,
vivien.didelot@...oirfairelinux.com,
Fabian Frederick <fabf@...net.be>,
Pavel Nakonechny <pavel.nakonechny@...tlab.ru>,
Joe Perches <joe@...ches.com>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, Frode Isaksen <fisaksen@...libre.com>
Subject: Re: [PATCH v2 5/6] net: dsa: add missing calls in dsa_switch_destroy
On Thu, Oct 29, 2015 at 02:23:25PM +0100, Neil Armstrong wrote:
> Add missing netif_carrier_off and phy_disconnect calls to the
> dsa_switch_destroy function to make sure the netdev and phy
> ressources are clean before complete removal.
>
> Signed-off-by: Frode Isaksen <fisaksen@...libre.com>
> Signed-off-by: Neil Armstrong <narmstrong@...libre.com>
> ---
> net/dsa/dsa.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
> index 597a462..11452e4 100644
> --- a/net/dsa/dsa.c
> +++ b/net/dsa/dsa.c
> @@ -454,7 +454,9 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
> if (!ds->ports[port])
> continue;
>
> + netif_carrier_off(ds->ports[port]);
> unregister_netdev(ds->ports[port]);
> + phy_disconnect(p->phy);
> free_netdev(ds->ports[port]);
> }
Once you make it actually compile....
I'm not sure this is safe. The loop above this one has just destroyed
some phys, and now you are potentially disconnecting a phy you just
destroyed, causing it to be accessed?
I would suggest you first fix the ordering in dsa_switch_destroy()
and then add the missing netif_carrier_off() and phy_disconnect().
Thanks
Andrew
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists