> -----Original Message----- > From: Michael Kelley (EOSG) > Sent: Sunday, March 18, 2018 8:40 PM > To: KY Srinivasan <kys@xxxxxxxxxxxxx>; Arvind Yadav > <arvind.yadav.cs@xxxxxxxxx>; Stephen Hemminger > <sthemmin@xxxxxxxxxxxxx>; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Subject: RE: [PATCH] vmbus: use put_device() if device_register fail > > > -----Original Message----- > > From: linux-kernel-owner@xxxxxxxxxxxxxxx <linux-kernel- > owner@xxxxxxxxxxxxxxx> On Behalf > > Of KY Srinivasan > > Sent: Sunday, March 18, 2018 8:02 PM > > To: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx>; Stephen Hemminger > > <sthemmin@xxxxxxxxxxxxx>; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > > Subject: RE: [PATCH] vmbus: use put_device() if device_register fail > > > > > -----Original Message----- > > > From: devel <driverdev-devel-bounces@xxxxxxxxxxxxxxxxxxxxxx> On > Behalf > > > Of Arvind Yadav > > > Sent: Saturday, March 17, 2018 11:48 PM > > > To: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>; Haiyang Zhang > > > <haiyangz@xxxxxxxxxxxxx> > > > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > > > Subject: [PATCH] vmbus: use put_device() if device_register fail > > > > > > if device_register() returned an error. Always use put_device() > > > to give up the reference initialized. > > > > > > Signed-off-by: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx> > > > --- > > > drivers/hv/vmbus_drv.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > > > index bc65c4d..25da2f3 100644 > > > --- a/drivers/hv/vmbus_drv.c > > > +++ b/drivers/hv/vmbus_drv.c > > > @@ -1358,6 +1358,7 @@ int vmbus_device_register(struct hv_device > > > *child_device_obj) > > > ret = device_register(&child_device_obj->device); > > > if (ret) { > > > pr_err("Unable to register child device\n"); > > > + put_device(&child_device_obj->device); > > > > If the registration failed; we would not have acquired the reference on the > device and so > > we should not be dropping the reference in the failure path. > > Looking at the code for device_register() and its constituent parts > device_initialize() and device_add(), Arvind is correct. device_initialize() > creates the object with a reference count of 1. device_add() does not > decrement that reference count or free the object, even if it fails. The > comments for device_register() call this out as well. Yes; agreed. I will take this patch. K. Y > > Michael > > > > > K. Y > > > return ret; > > > } > > > > > > -- > > > 2.7.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel