Browse Source

bus: vexpress-config: fix device reference leak

Make sure to drop the reference to the parent device taken by
class_find_device() after populating the bus.

Fixes: 3b9334ac835b ("mfd: vexpress: Convert custom func API to regmap")
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Johan Hovold 8 years ago
parent
commit
c090959b9d
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/bus/vexpress-config.c

+ 6 - 1
drivers/bus/vexpress-config.c

@@ -171,6 +171,7 @@ static int vexpress_config_populate(struct device_node *node)
 {
 {
 	struct device_node *bridge;
 	struct device_node *bridge;
 	struct device *parent;
 	struct device *parent;
+	int ret;
 
 
 	bridge = of_parse_phandle(node, "arm,vexpress,config-bridge", 0);
 	bridge = of_parse_phandle(node, "arm,vexpress,config-bridge", 0);
 	if (!bridge)
 	if (!bridge)
@@ -182,7 +183,11 @@ static int vexpress_config_populate(struct device_node *node)
 	if (WARN_ON(!parent))
 	if (WARN_ON(!parent))
 		return -ENODEV;
 		return -ENODEV;
 
 
-	return of_platform_populate(node, NULL, NULL, parent);
+	ret = of_platform_populate(node, NULL, NULL, parent);
+
+	put_device(parent);
+
+	return ret;
 }
 }
 
 
 static int __init vexpress_config_init(void)
 static int __init vexpress_config_init(void)