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 <fisak...@baylibre.com>
> Signed-off-by: Neil Armstrong <narmstr...@baylibre.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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to