On Fri, 2022-11-11 at 22:59 +0800, Yang Yingliang wrote: > If device_register() returns error in ocxl_file_register_afu(), > the name allocated by dev_set_name() need be freed. As comment > of device_register() says, it should use put_device() to give > up the reference in the error path. So fix this by calling > put_device(), then the name can be freed in kobject_cleanup(), > and info is freed in info_release(). > > Fixes: 75ca758adbaf ("ocxl: Create a clear delineation between ocxl > backend & frontend") > Signed-off-by: Yang Yingliang <yangyingli...@huawei.com>
Thanks for the fix - as you point out, put_device() should clean everything up that needs cleaning up. Acked-by: Andrew Donnellan <a...@linux.ibm.com> > --- > drivers/misc/ocxl/file.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c > index d46dba2df5a1..452d5777a0e4 100644 > --- a/drivers/misc/ocxl/file.c > +++ b/drivers/misc/ocxl/file.c > @@ -541,8 +541,11 @@ int ocxl_file_register_afu(struct ocxl_afu *afu) > goto err_put; > > rc = device_register(&info->dev); > - if (rc) > - goto err_put; > + if (rc) { > + free_minor(info); > + put_device(&info->dev); > + return rc; > + } > > rc = ocxl_sysfs_register_afu(info); > if (rc) -- Andrew Donnellan OzLabs, ADL Canberra a...@linux.ibm.com IBM Australia Limited