Browse Source

powerpc/ibmebus: Fix further device reference leaks

Make sure to drop any reference taken by bus_find_device() when creating
devices during init and driver registration.

Fixes: 55347cc9962f ("[POWERPC] ibmebus: Add device creation and bus probing based on of_device")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Johan Hovold 8 năm trước cách đây
mục cha
commit
815a7141c4
1 tập tin đã thay đổi với 6 bổ sung2 xóa
  1. 6 2
      arch/powerpc/kernel/ibmebus.c

+ 6 - 2
arch/powerpc/kernel/ibmebus.c

@@ -180,6 +180,7 @@ static int ibmebus_create_device(struct device_node *dn)
 static int ibmebus_create_devices(const struct of_device_id *matches)
 static int ibmebus_create_devices(const struct of_device_id *matches)
 {
 {
 	struct device_node *root, *child;
 	struct device_node *root, *child;
+	struct device *dev;
 	int ret = 0;
 	int ret = 0;
 
 
 	root = of_find_node_by_path("/");
 	root = of_find_node_by_path("/");
@@ -188,9 +189,12 @@ static int ibmebus_create_devices(const struct of_device_id *matches)
 		if (!of_match_node(matches, child))
 		if (!of_match_node(matches, child))
 			continue;
 			continue;
 
 
-		if (bus_find_device(&ibmebus_bus_type, NULL, child,
-				    ibmebus_match_node))
+		dev = bus_find_device(&ibmebus_bus_type, NULL, child,
+				      ibmebus_match_node);
+		if (dev) {
+			put_device(dev);
 			continue;
 			continue;
+		}
 
 
 		ret = ibmebus_create_device(child);
 		ret = ibmebus_create_device(child);
 		if (ret) {
 		if (ret) {