Hi, On Fri, Apr 19, 2019 at 02:35:19PM -0700, David Miller wrote: > From: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> > Date: Thu, 18 Apr 2019 07:26:20 +0200 > > > +static int ag71xx_remove(struct platform_device *pdev) > > +{ > > + struct net_device *ndev = platform_get_drvdata(pdev); > > + struct ag71xx *ag; > > + > > + if (!ndev) > > + return 0; > > + > > + ag = netdev_priv(ndev); > > + ag71xx_phy_disconnect(ag); > > + ag71xx_mdio_remove(ag); > > + unregister_netdev(ndev); > > + platform_set_drvdata(pdev, NULL); > > + > > + return 0; > > +} > > You should unregister the netdev before you disconnect the PHY and remove > the MDIO. ok. > Also you need to call free_netdev() afterwards otherwise you will leak it. ndev is allocated with devm_alloc_etherdev(). Are you sure free_netdev() should be used here? -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |