generic: mvswitch: add detach callback
Use the detach callback to disable packet mangling to avoid possible NULL pointer dereference. Compile tested only. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 35512
This commit is contained in:
		@@ -348,16 +348,26 @@ mvswitch_config_aneg(struct phy_device *phydev)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
mvswitch_remove(struct phy_device *pdev)
 | 
			
		||||
mvswitch_detach(struct phy_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	struct mvswitch_priv *priv = to_mvsw(pdev);
 | 
			
		||||
	struct net_device *dev = pdev->attached_dev;
 | 
			
		||||
 | 
			
		||||
	if (!dev)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	dev->phy_ptr = NULL;
 | 
			
		||||
	dev->eth_mangle_rx = NULL;
 | 
			
		||||
	dev->eth_mangle_tx = NULL;
 | 
			
		||||
	dev->features = priv->orig_features;
 | 
			
		||||
	dev->priv_flags &= ~IFF_NO_IP_ALIGN;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
mvswitch_remove(struct phy_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	struct mvswitch_priv *priv = to_mvsw(pdev);
 | 
			
		||||
 | 
			
		||||
	kfree(priv);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -399,6 +409,7 @@ static struct phy_driver mvswitch_driver = {
 | 
			
		||||
	.features	= PHY_BASIC_FEATURES,
 | 
			
		||||
	.probe		= &mvswitch_probe,
 | 
			
		||||
	.remove		= &mvswitch_remove,
 | 
			
		||||
	.detach		= &mvswitch_detach,
 | 
			
		||||
	.config_init	= &mvswitch_config_init,
 | 
			
		||||
	.config_aneg	= &mvswitch_config_aneg,
 | 
			
		||||
	.read_status	= &mvswitch_read_status,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user