* [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface
@ 2016-11-01 15:26 Johan Hovold
2016-11-01 15:26 ` [PATCH 2/4] ibmebus: fix further device reference leaks Johan Hovold
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Johan Hovold @ 2016-11-01 15:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman
Cc: linuxppc-dev, Johan Hovold
Make sure to drop any reference taken by bus_find_device() in the sysfs
callbacks that are used to create and destroy devices based on
device-tree entries.
Fixes: 6bccf755ff53 ("[POWERPC] ibmebus: dynamic addition/removal...)
Signed-off-by: Johan Hovold <johan@kernel.org>
---
arch/powerpc/kernel/ibmebus.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index 6ca9a2ffaac7..c7d3ff7e101c 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/arch/powerpc/kernel/ibmebus.c
@@ -262,6 +262,7 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus,
const char *buf, size_t count)
{
struct device_node *dn = NULL;
+ struct device *dev;
char *path;
ssize_t rc = 0;
@@ -269,8 +270,10 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus,
if (!path)
return -ENOMEM;
- if (bus_find_device(&ibmebus_bus_type, NULL, path,
- ibmebus_match_path)) {
+ dev = bus_find_device(&ibmebus_bus_type, NULL, path,
+ ibmebus_match_path);
+ if (dev) {
+ put_device(dev);
printk(KERN_WARNING "%s: %s has already been probed\n",
__func__, path);
rc = -EEXIST;
@@ -307,6 +310,7 @@ static ssize_t ibmebus_store_remove(struct bus_type *bus,
if ((dev = bus_find_device(&ibmebus_bus_type, NULL, path,
ibmebus_match_path))) {
of_device_unregister(to_platform_device(dev));
+ put_device(dev);
kfree(path);
return count;
--
2.7.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] ibmebus: fix further device reference leaks
2016-11-01 15:26 [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface Johan Hovold
@ 2016-11-01 15:26 ` Johan Hovold
2016-11-14 12:17 ` [2/4] " Michael Ellerman
2016-11-01 15:26 ` [PATCH 3/4] powerpc/vio: clarify vio_find_node reference counting Johan Hovold
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Johan Hovold @ 2016-11-01 15:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman
Cc: linuxppc-dev, Johan Hovold
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...)
Signed-off-by: Johan Hovold <johan@kernel.org>
---
arch/powerpc/kernel/ibmebus.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index c7d3ff7e101c..35f5244782d9 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/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)
{
struct device_node *root, *child;
+ struct device *dev;
int ret = 0;
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))
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;
+ }
ret = ibmebus_create_device(child);
if (ret) {
--
2.7.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] powerpc/vio: clarify vio_find_node reference counting
2016-11-01 15:26 [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface Johan Hovold
2016-11-01 15:26 ` [PATCH 2/4] ibmebus: fix further device reference leaks Johan Hovold
@ 2016-11-01 15:26 ` Johan Hovold
2016-11-14 12:17 ` [3/4] " Michael Ellerman
2016-11-01 15:26 ` [PATCH 4/4] powerpc/pci: fix device reference leaks Johan Hovold
2016-11-14 12:17 ` [1/4] ibmebus: fix device reference leaks in sysfs interface Michael Ellerman
3 siblings, 1 reply; 8+ messages in thread
From: Johan Hovold @ 2016-11-01 15:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman
Cc: linuxppc-dev, Johan Hovold
Add comment clarifying that vio_find_node() takes a reference to the
embedded struct device which needs to be dropped after use.
Signed-off-by: Johan Hovold <johan@kernel.org>
---
arch/powerpc/kernel/vio.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index b3813ddb2fb4..2c8fb3ec989e 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -1648,6 +1648,9 @@ static struct vio_dev *vio_find_name(const char *name)
/**
* vio_find_node - find an already-registered vio_dev
* @vnode: device_node of the virtual device we're looking for
+ *
+ * Takes a reference to the embedded struct device which needs to be dropped
+ * after use.
*/
struct vio_dev *vio_find_node(struct device_node *vnode)
{
--
2.7.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] powerpc/pci: fix device reference leaks
2016-11-01 15:26 [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface Johan Hovold
2016-11-01 15:26 ` [PATCH 2/4] ibmebus: fix further device reference leaks Johan Hovold
2016-11-01 15:26 ` [PATCH 3/4] powerpc/vio: clarify vio_find_node reference counting Johan Hovold
@ 2016-11-01 15:26 ` Johan Hovold
2016-11-14 12:17 ` [4/4] " Michael Ellerman
2016-11-14 12:17 ` [1/4] ibmebus: fix device reference leaks in sysfs interface Michael Ellerman
3 siblings, 1 reply; 8+ messages in thread
From: Johan Hovold @ 2016-11-01 15:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman
Cc: linuxppc-dev, Johan Hovold
Make sure to drop any device reference taken by vio_find_node() when
adding and removing virtual I/O slots.
Fixes: 5eeb8c63a38f ("[PATCH] PCI Hotplug: rpaphp: Move VIO...")
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/pci/hotplug/rpadlpar_core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/hotplug/rpadlpar_core.c b/drivers/pci/hotplug/rpadlpar_core.c
index dc67f39779ec..c614ff7c3bc3 100644
--- a/drivers/pci/hotplug/rpadlpar_core.c
+++ b/drivers/pci/hotplug/rpadlpar_core.c
@@ -257,8 +257,13 @@ static int dlpar_add_phb(char *drc_name, struct device_node *dn)
static int dlpar_add_vio_slot(char *drc_name, struct device_node *dn)
{
- if (vio_find_node(dn))
+ struct vio_dev *vio_dev;
+
+ vio_dev = vio_find_node(dn);
+ if (vio_dev) {
+ put_device(&vio_dev->dev);
return -EINVAL;
+ }
if (!vio_register_device_node(dn)) {
printk(KERN_ERR
@@ -334,6 +339,9 @@ static int dlpar_remove_vio_slot(char *drc_name, struct device_node *dn)
return -EINVAL;
vio_unregister_device(vio_dev);
+
+ put_device(&vio_dev->dev);
+
return 0;
}
--
2.7.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [1/4] ibmebus: fix device reference leaks in sysfs interface
2016-11-01 15:26 [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface Johan Hovold
` (2 preceding siblings ...)
2016-11-01 15:26 ` [PATCH 4/4] powerpc/pci: fix device reference leaks Johan Hovold
@ 2016-11-14 12:17 ` Michael Ellerman
3 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2016-11-14 12:17 UTC (permalink / raw)
To: Johan Hovold, Benjamin Herrenschmidt, Paul Mackerras
Cc: linuxppc-dev, Johan Hovold
On Tue, 2016-01-11 at 15:26:00 UTC, Johan Hovold wrote:
> Make sure to drop any reference taken by bus_find_device() in the sysfs
> callbacks that are used to create and destroy devices based on
> device-tree entries.
>
> Fixes: 6bccf755ff53 ("[POWERPC] ibmebus: dynamic addition/removal...)
> Signed-off-by: Johan Hovold <johan@kernel.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/fe0f3168169f7c34c29b0cf0c489f1
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [2/4] ibmebus: fix further device reference leaks
2016-11-01 15:26 ` [PATCH 2/4] ibmebus: fix further device reference leaks Johan Hovold
@ 2016-11-14 12:17 ` Michael Ellerman
0 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2016-11-14 12:17 UTC (permalink / raw)
To: Johan Hovold, Benjamin Herrenschmidt, Paul Mackerras
Cc: linuxppc-dev, Johan Hovold
On Tue, 2016-01-11 at 15:26:01 UTC, Johan Hovold wrote:
> 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...)
> Signed-off-by: Johan Hovold <johan@kernel.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/815a7141c4d1b11610dccb7fcbb386
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [3/4] powerpc/vio: clarify vio_find_node reference counting
2016-11-01 15:26 ` [PATCH 3/4] powerpc/vio: clarify vio_find_node reference counting Johan Hovold
@ 2016-11-14 12:17 ` Michael Ellerman
0 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2016-11-14 12:17 UTC (permalink / raw)
To: Johan Hovold, Benjamin Herrenschmidt, Paul Mackerras
Cc: linuxppc-dev, Johan Hovold
On Tue, 2016-01-11 at 15:26:02 UTC, Johan Hovold wrote:
> Add comment clarifying that vio_find_node() takes a reference to the
> embedded struct device which needs to be dropped after use.
>
> Signed-off-by: Johan Hovold <johan@kernel.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/e8cfb7e7c3b2be8a4c2241b5da2ae6
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [4/4] powerpc/pci: fix device reference leaks
2016-11-01 15:26 ` [PATCH 4/4] powerpc/pci: fix device reference leaks Johan Hovold
@ 2016-11-14 12:17 ` Michael Ellerman
0 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2016-11-14 12:17 UTC (permalink / raw)
To: Johan Hovold, Benjamin Herrenschmidt, Paul Mackerras
Cc: linuxppc-dev, Johan Hovold
On Tue, 2016-01-11 at 15:26:03 UTC, Johan Hovold wrote:
> Make sure to drop any device reference taken by vio_find_node() when
> adding and removing virtual I/O slots.
>
> Fixes: 5eeb8c63a38f ("[PATCH] PCI Hotplug: rpaphp: Move VIO...")
> Signed-off-by: Johan Hovold <johan@kernel.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/99e5cde5eae78bef95bfe7c16ccda8
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-11-14 12:17 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-01 15:26 [PATCH 1/4] ibmebus: fix device reference leaks in sysfs interface Johan Hovold
2016-11-01 15:26 ` [PATCH 2/4] ibmebus: fix further device reference leaks Johan Hovold
2016-11-14 12:17 ` [2/4] " Michael Ellerman
2016-11-01 15:26 ` [PATCH 3/4] powerpc/vio: clarify vio_find_node reference counting Johan Hovold
2016-11-14 12:17 ` [3/4] " Michael Ellerman
2016-11-01 15:26 ` [PATCH 4/4] powerpc/pci: fix device reference leaks Johan Hovold
2016-11-14 12:17 ` [4/4] " Michael Ellerman
2016-11-14 12:17 ` [1/4] ibmebus: fix device reference leaks in sysfs interface Michael Ellerman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).