Oh, yes, there it is, and the pointer to vio_dev_release() was already set up a little earlier in this function. Sorry for the noise. sln On Wed, Apr 25, 2018 at 8:59 AM, arvindY <arvind.yadav.cs@xxxxxxxxx> wrote: > > > On Wednesday 25 April 2018 09:14 PM, Shannon Nelson wrote: >> >> On 4/25/2018 7:56 AM, Arvind Yadav wrote: >>> >>> Never directly free @dev after calling device_register(), even >>> if it returned an error. Always use put_device() to give up the >>> reference initialized. >>> >>> Signed-off-by: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx> >>> --- >>> arch/sparc/kernel/vio.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c >>> index 1a0fa10..32bae68 100644 >>> --- a/arch/sparc/kernel/vio.c >>> +++ b/arch/sparc/kernel/vio.c >>> @@ -403,7 +403,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); >> >> >> Hmmm... I can see why the put_device() might be a good idea, but I think >> we still need the kfree() so as to not leak the memory that was kzalloc'd >> above for vdev. >> > > There is no need to call kfree() here. Because put_device() > will decrement the last reference and then free the memory > by calling dev->release(It'll call vio_dev_release()). > Internally put_device() -> kobject_put() -> kobject_cleanup() > which is responsible to call 'dev -> release' and also free > other kobject resources. > If we will call kfree() here, Then It'll be a redundant call. > > ~arvind > > >> sln >> >>> return NULL; >>> } >>> if (vdev->dp) >>> > > -- > To unsubscribe from this list: send the line "unsubscribe sparclinux" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- ============================================== Mr. Shannon Nelson Parents can't afford to be squeamish. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html