Message ID | 1387465429-3568-6-git-send-email-levex@linux.com |
---|---|
State | Rejected |
Delegated to: | David Miller |
Headers | show |
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 --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)
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(-)