[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