On Fri, Jan 28, 2022 at 01:56:04PM -0800, Juan Vazquez wrote: > On Wed, Jan 26, 2022 at 05:52:46AM +0000, Miaoqian Lin wrote: > > kobject_init_and_add() takes reference even when it fails. > > According to the doc of kobject_init_and_add(): > > > > If this function returns an error, kobject_put() must be called to > > properly clean up the memory associated with the object. > > > > Fix memory leak by calling kobject_put(). > > > > Fixes: c2e5df616e1a ("vmbus: add per-channel sysfs info") > > Signed-off-by: Miaoqian Lin <linmq006@xxxxxxxxx> > > --- > > drivers/hv/vmbus_drv.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > > index 17bf55fe3169..9e055697783b 100644 > > --- a/drivers/hv/vmbus_drv.c > > +++ b/drivers/hv/vmbus_drv.c > > @@ -2028,8 +2028,10 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel) > > kobj->kset = dev->channels_kset; > > ret = kobject_init_and_add(kobj, &vmbus_chan_ktype, NULL, > > "%u", relid); > > - if (ret) > > + if (ret) { > > + kobject_put(kobj); > > return ret; > > + } > > > > ret = sysfs_create_group(kobj, &vmbus_chan_group); > If sysfs_create_group() fails same cleanup I think is required. > > Later kobject_uevent() may fail according to doc, but there is no error > handling, maybe a good moment to consider adding it and do same cleanup. Miaoqian, are you going to post a new version to address Juan's comment here? Thanks, Wei. > > > > -- > > 2.17.1