misc: use put_device() instead of kfree()
Subsystems (2)
cover misc: use put_device() instead of kfree()
Never directly free @dev after calling device_register(), even if it returned an error! Always use put_device() to give up the reference initialized.
Arvind Yadav (2):
[PATCH 1/2] misc: mic: Release reference count and memory for VOP device [PATCH 2/2] misc: ocxl: use put_device() instead of device_unregister()
drivers/misc/mic/bus/vop_bus.c | 6 ++++-- drivers/misc/ocxl/pci.c | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-)
Signature · 1 line
1.9.1
PATCH 1/2 misc: mic: Release reference count and memory for VOP device
Never directly free @dev after calling device_register(), even if it returned an error! Always use put_device() to give up the reference initialized.
Release allocated memory for vop device in vop_release_dev().
--- drivers/misc/mic/bus/vop_bus.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/misc/mic/bus/vop_bus.c +4 -2
@@ -135,7 +135,9 @@ void vop_unregister_driver(struct vop_driver *driver)static void vop_release_dev (struct device *d) { -put_device (d); +struct vop_device *dev =dev_to_vop (d); + +kfree (dev); } struct vop_device *
@@ -174,7 +176,7 @@ struct vop_device * goto free_vdev;return vdev; free_vdev: -kfree (vdev); +put_device (&vdev->dev);return ERR_PTR (ret); }EXPORT_SYMBOL_GPL (vop_register_device);
Signature · 1 line
1.9.1
PATCH 2/2 misc: ocxl: use put_device() instead of device_unregister()
In reply to Arvind Yadavif device_register() returned an error! Always use put_device() to give up the reference initialized.
--- drivers/misc/ocxl/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/misc/ocxl/pci.c +1 -1
@@ -519,7 +519,7 @@ static struct ocxl_fn *init_function(struct pci_dev *dev) rc =device_register (&fn->dev);if (rc) {deconfigure_function (fn); -device_unregister (&fn->dev); +put_device (&fn->dev);return ERR_PTR (rc); }return fn;
Signature · 1 line
1.9.1
Re: [PATCH 2/2] misc: ocxl: use put_device() instead of device_unregister()
Quoted 4 lines · Arvind Yadav
if
device_register()returned an error! Always useput_device()to give up the reference initialized.Signed-off-by Arvind Yadav <[email protected]>
This looks right, thanks for picking it up.
Signature · 2 lines
Andrew Donnellan OzLabs, ADL Canberra [email protected] IBM Australia Limited
Re: [PATCH 2/2] misc: ocxl: use put_device() instead of device_unregister()
In reply to Arvind YadavLe 12/03/2018 à 12:36, Arvind Yadav a écrit :
Quoted 5 lines
if
device_register()returned an error! Always useput_device()to give up the reference initialized.Signed-off-by Arvind Yadav <[email protected]>---
OK, device_unregister() calls put_device() but also other actions that we can skip in this case.
Quoted 17 lines
drivers/misc/ocxl/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/misc/ocxl/pci.c +1
-1@@ -519,7 +519,7 @@ static struct ocxl_fn *init_function(struct pci_dev *dev) rc =device_register (&fn->dev);if (rc) {deconfigure_function (fn); -device_unregister (&fn->dev); +put_device (&fn->dev);return ERR_PTR (rc); }return fn;