aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/phy_fixed.h
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2016-03-12 00:01:40 +0100
committerDavid S. Miller <davem@davemloft.net>2016-03-14 15:43:11 -0400
commit5bcbe0f35fb13e31fdd0b2dc9695f19ab0208207 (patch)
tree43a275f2ab4cfcdfefd2da7e376063080994beb2 /include/linux/phy_fixed.h
parentdsa: dsa: Fix freeing of fixed-phys from user ports. (diff)
downloadlinux-dev-5bcbe0f35fb13e31fdd0b2dc9695f19ab0208207.tar.xz
linux-dev-5bcbe0f35fb13e31fdd0b2dc9695f19ab0208207.zip
phy: fixed: Fix removal of phys.
The fixed phys delete function simply removed the fixed phy from the internal linked list and freed the memory. It however did not unregister the associated phy device. This meant it was still possible to find the phy device on the mdio bus. Make fixed_phy_del() an internal function and add a fixed_phy_unregister() to unregisters the phy device and then uses fixed_phy_del() to free resources. Modify DSA to use this new API function, so we don't leak phys. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/phy_fixed.h')
-rw-r--r--include/linux/phy_fixed.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/include/linux/phy_fixed.h b/include/linux/phy_fixed.h
index 2400d2ea4f34..1d41ec44e39d 100644
--- a/include/linux/phy_fixed.h
+++ b/include/linux/phy_fixed.h
@@ -19,7 +19,7 @@ extern struct phy_device *fixed_phy_register(unsigned int irq,
struct fixed_phy_status *status,
int link_gpio,
struct device_node *np);
-extern void fixed_phy_del(int phy_addr);
+extern void fixed_phy_unregister(struct phy_device *phydev);
extern int fixed_phy_set_link_update(struct phy_device *phydev,
int (*link_update)(struct net_device *,
struct fixed_phy_status *));
@@ -40,9 +40,8 @@ static inline struct phy_device *fixed_phy_register(unsigned int irq,
{
return ERR_PTR(-ENODEV);
}
-static inline int fixed_phy_del(int phy_addr)
+static inline void fixed_phy_unregister(struct phy_device *phydev)
{
- return -ENODEV;
}
static inline int fixed_phy_set_link_update(struct phy_device *phydev,
int (*link_update)(struct net_device *,