diff options
author | Mark Brown <broonie@kernel.org> | 2021-10-07 22:35:27 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-10-07 22:35:27 +0100 |
commit | 5fe7bd5a37ff0d77936f8e38313db5da2dd53f70 (patch) | |
tree | 5012e70d0993aa23466e06012d2bfb98ba04aa29 /drivers/net/dsa/dsa_loop.c | |
parent | 48a78c66ad5d9d4f918182335d6e5726e7008085 (diff) | |
parent | 67a12ae52599c9f2f24ef14adb43fc3b164792b5 (diff) |
Merge branch 'spi-5.15' into spi-5.16
Diffstat (limited to 'drivers/net/dsa/dsa_loop.c')
-rw-r--r-- | drivers/net/dsa/dsa_loop.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/net/dsa/dsa_loop.c b/drivers/net/dsa/dsa_loop.c index bfdf3324aac3..e638e3eea911 100644 --- a/drivers/net/dsa/dsa_loop.c +++ b/drivers/net/dsa/dsa_loop.c @@ -340,10 +340,29 @@ static int dsa_loop_drv_probe(struct mdio_device *mdiodev) static void dsa_loop_drv_remove(struct mdio_device *mdiodev) { struct dsa_switch *ds = dev_get_drvdata(&mdiodev->dev); - struct dsa_loop_priv *ps = ds->priv; + struct dsa_loop_priv *ps; + + if (!ds) + return; + + ps = ds->priv; dsa_unregister_switch(ds); dev_put(ps->netdev); + + dev_set_drvdata(&mdiodev->dev, NULL); +} + +static void dsa_loop_drv_shutdown(struct mdio_device *mdiodev) +{ + struct dsa_switch *ds = dev_get_drvdata(&mdiodev->dev); + + if (!ds) + return; + + dsa_switch_shutdown(ds); + + dev_set_drvdata(&mdiodev->dev, NULL); } static struct mdio_driver dsa_loop_drv = { @@ -352,6 +371,7 @@ static struct mdio_driver dsa_loop_drv = { }, .probe = dsa_loop_drv_probe, .remove = dsa_loop_drv_remove, + .shutdown = dsa_loop_drv_shutdown, }; #define NUM_FIXED_PHYS (DSA_LOOP_NUM_PORTS - 2) |