2016-10-07 15:14:28

by Xander Huff

[permalink] [raw]
Subject: [PATCH] net: macb: NULL out phydev after removing mdio bus

From: Nathan Sullivan <[email protected]>

To ensure the dev->phydev pointer is not used after becoming invalid in
mdiobus_unregister, set it to NULL. This happens when removing the macb
driver without first taking its interface down, since unregister_netdev
will end up calling macb_close.

Signed-off-by: Xander Huff <[email protected]>
Signed-off-by: Nathan Sullivan <[email protected]>
Signed-off-by: Brad Mouring <[email protected]>
---
drivers/net/ethernet/cadence/macb.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 63144bb..b32444a 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -3117,6 +3117,7 @@ static int macb_remove(struct platform_device *pdev)
if (dev->phydev)
phy_disconnect(dev->phydev);
mdiobus_unregister(bp->mii_bus);
+ dev->phydev = NULL;
mdiobus_free(bp->mii_bus);

/* Shutdown the PHY if there is a GPIO reset */
--
1.9.1


2016-10-07 15:41:03

by Moritz Fischer

[permalink] [raw]
Subject: Re: [PATCH] net: macb: NULL out phydev after removing mdio bus

On Fri, Oct 7, 2016 at 8:13 AM, Xander Huff <[email protected]> wrote:
> From: Nathan Sullivan <[email protected]>
>
> To ensure the dev->phydev pointer is not used after becoming invalid in
> mdiobus_unregister, set it to NULL. This happens when removing the macb
> driver without first taking its interface down, since unregister_netdev
> will end up calling macb_close.
>
> Signed-off-by: Xander Huff <[email protected]>
> Signed-off-by: Nathan Sullivan <[email protected]>
> Signed-off-by: Brad Mouring <[email protected]>
Reviewed-by: Moritz Fischer <[email protected]>

2016-10-07 16:22:26

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [PATCH] net: macb: NULL out phydev after removing mdio bus

Le 07/10/2016 ? 17:13, Xander Huff a ?crit :
> From: Nathan Sullivan <[email protected]>
>
> To ensure the dev->phydev pointer is not used after becoming invalid in
> mdiobus_unregister, set it to NULL. This happens when removing the macb
> driver without first taking its interface down, since unregister_netdev
> will end up calling macb_close.
>
> Signed-off-by: Xander Huff <[email protected]>
> Signed-off-by: Nathan Sullivan <[email protected]>
> Signed-off-by: Brad Mouring <[email protected]>

Acked-by: Nicolas Ferre <[email protected]>

> ---
> drivers/net/ethernet/cadence/macb.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
> index 63144bb..b32444a 100644
> --- a/drivers/net/ethernet/cadence/macb.c
> +++ b/drivers/net/ethernet/cadence/macb.c
> @@ -3117,6 +3117,7 @@ static int macb_remove(struct platform_device *pdev)
> if (dev->phydev)
> phy_disconnect(dev->phydev);
> mdiobus_unregister(bp->mii_bus);
> + dev->phydev = NULL;
> mdiobus_free(bp->mii_bus);
>
> /* Shutdown the PHY if there is a GPIO reset */
>


--
Nicolas Ferre

2016-10-08 03:57:24

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: macb: NULL out phydev after removing mdio bus

From: Xander Huff <[email protected]>
Date: Fri, 7 Oct 2016 10:13:22 -0500

> From: Nathan Sullivan <[email protected]>
>
> To ensure the dev->phydev pointer is not used after becoming invalid in
> mdiobus_unregister, set it to NULL. This happens when removing the macb
> driver without first taking its interface down, since unregister_netdev
> will end up calling macb_close.
>
> Signed-off-by: Xander Huff <[email protected]>
> Signed-off-by: Nathan Sullivan <[email protected]>
> Signed-off-by: Brad Mouring <[email protected]>

Applied.