[PATCH] misc: ocxl: fix possible name leak in ocxl_file_register_afu()
Andrew Donnellan
ajd at linux.ibm.com
Mon Nov 21 16:52:55 AEDT 2022
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 <yangyingliang at huawei.com>
Thanks for the fix - as you point out, put_device() should clean
everything up that needs cleaning up.
Acked-by: Andrew Donnellan <ajd at 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
ajd at linux.ibm.com IBM Australia Limited
More information about the Linuxppc-dev
mailing list