]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.4.44/powerpc-ibmebus-fix-further-device-reference-leaks.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.4.44 / powerpc-ibmebus-fix-further-device-reference-leaks.patch
1 From 815a7141c4d1b11610dccb7fcbb38633759824f2 Mon Sep 17 00:00:00 2001
2 From: Johan Hovold <johan@kernel.org>
3 Date: Tue, 1 Nov 2016 16:26:01 +0100
4 Subject: powerpc/ibmebus: Fix further device reference leaks
5
6 From: Johan Hovold <johan@kernel.org>
7
8 commit 815a7141c4d1b11610dccb7fcbb38633759824f2 upstream.
9
10 Make sure to drop any reference taken by bus_find_device() when creating
11 devices during init and driver registration.
12
13 Fixes: 55347cc9962f ("[POWERPC] ibmebus: Add device creation and bus probing based on of_device")
14 Signed-off-by: Johan Hovold <johan@kernel.org>
15 Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
16 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17
18 ---
19 arch/powerpc/kernel/ibmebus.c | 8 ++++++--
20 1 file changed, 6 insertions(+), 2 deletions(-)
21
22 --- a/arch/powerpc/kernel/ibmebus.c
23 +++ b/arch/powerpc/kernel/ibmebus.c
24 @@ -180,6 +180,7 @@ static int ibmebus_create_device(struct
25 static int ibmebus_create_devices(const struct of_device_id *matches)
26 {
27 struct device_node *root, *child;
28 + struct device *dev;
29 int ret = 0;
30
31 root = of_find_node_by_path("/");
32 @@ -188,9 +189,12 @@ static int ibmebus_create_devices(const
33 if (!of_match_node(matches, child))
34 continue;
35
36 - if (bus_find_device(&ibmebus_bus_type, NULL, child,
37 - ibmebus_match_node))
38 + dev = bus_find_device(&ibmebus_bus_type, NULL, child,
39 + ibmebus_match_node);
40 + if (dev) {
41 + put_device(dev);
42 continue;
43 + }
44
45 ret = ibmebus_create_device(child);
46 if (ret) {