phy: Find the right match in devm_phy_destroy()
authorThierry Reding <treding@nvidia.com>
Wed, 25 Feb 2015 15:16:29 +0000 (16:16 +0100)
committerSasha Levin <sasha.levin@oracle.com>
Fri, 17 Apr 2015 00:11:41 +0000 (20:11 -0400)
[ Upstream commit 2f1bce487cd0a02623cff3d877940f9a2026341c ]

devm_phy_create() stores the pointer to the new PHY at the address
returned by devres_alloc(). The res parameter passed to devm_phy_match()
is therefore the location where the pointer to the PHY is stored, hence
it needs to be dereferenced before comparing to the match data in order
to find the correct match.

Cc: <stable@vger.kernel.org> # v3.13+
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/phy/phy-core.c

index ff5eec5af8173d4b4356152a63f71f3e9d2741c3..2733112b3527c3e597548b2c27f61850f145d773 100644 (file)
@@ -51,7 +51,9 @@ static void devm_phy_consume(struct device *dev, void *res)
 
 static int devm_phy_match(struct device *dev, void *res, void *match_data)
 {
-       return res == match_data;
+       struct phy **phy = res;
+
+       return *phy == match_data;
 }
 
 static struct phy *phy_lookup(struct device *device, const char *port)