diff mbox

[05/38] sparc: kernel: add missing put_device call

Message ID 1387465429-3568-6-git-send-email-levex@linux.com
State Rejected
Delegated to: David Miller
Headers show

Commit Message

Levente Kurusa Dec. 19, 2013, 3:03 p.m. UTC
This is required so that we give up the last reference to the device.
The kfree() has been removed because put_device will set the underlying kref's
reference count to zero and hence vio_dev_release will get called resulting in
kfreeing the structure.

Signed-off-by: Levente Kurusa <levex@linux.com>
---
 arch/sparc/kernel/vio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller Dec. 27, 2013, 5:43 p.m. UTC | #1
From: Levente Kurusa <levex@linux.com>
Date: Thu, 19 Dec 2013 16:03:16 +0100

> This is required so that we give up the last reference to the device.
> The kfree() has been removed because put_device will set the underlying kref's
> reference count to zero and hence vio_dev_release will get called resulting in
> kfreeing the structure.
> 
> Signed-off-by: Levente Kurusa <levex@linux.com>

There is no reference held to vdev->dev at this point, that's why
we should directly kfree() it and put_device() is not appropriate.

Pretty much all of your patches have this problem.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c
index 8647fcc..fb0088d 100644
--- a/arch/sparc/kernel/vio.c
+++ b/arch/sparc/kernel/vio.c
@@ -307,7 +307,7 @@  static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
 	if (err) {
 		printk(KERN_ERR "VIO: Could not register device %s, err=%d\n",
 		       dev_name(&vdev->dev), err);
-		kfree(vdev);
+		put_device(&vdev->dev);
 		return NULL;
 	}
 	if (vdev->dp)