Re: [PATCH] floppy: unregister platform device on add_disk failure

"Denis Efremov (Oracle)" <[email protected]>
Newsgroups org.kernel.vger.linux-block,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hello,

Thank you for the patch.

On 08/07/2026 14:57, Guangshuo Li wrote:
> The change referenced by the Fixes tag reverted a previous fix because
> that fix added incorrect cleanup for the platform_device_register()
> failure path.
> 
> However, reverting the whole change also removed the cleanup for a later
> failure path. If platform_device_register() succeeds but device_add_disk()
> fails, the current floppy platform device has already been registered and
> registered[drive] has been set.
> 
> The common out_remove_drives path uses while (drive--), so it starts from
> the previous drive and does not unregister the current one. As a result,
> the platform device registered for the failing drive is leaked.
> 
> Unregister the current platform device directly on the device_add_disk()
> failure path, where platform_device_register() is known to have
> succeeded. Leave the platform_device_register() failure path unchanged.
> 
> Fixes: 895a9b37917d ("Revert "floppy: fix reference leak on platform_device_register() failure"")
> Signed-off-by: Guangshuo Li <[email protected]>

Reviewed-by: Denis Efremov (Oracle) <[email protected]>

I would also add
Fixes: 47d34aa2d211 ("floppy: add error handling support for add_disk()")
Cc: [email protected]

> ---
>  drivers/block/floppy.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
> index f04397b8e381..7a34af534460 100644
> --- a/drivers/block/floppy.c
> +++ b/drivers/block/floppy.c
> @@ -4729,8 +4729,11 @@ static int __init do_floppy_init(void)
>  
>  		err = device_add_disk(&floppy_device[drive].dev,
>  				      disks[drive][0], NULL);
> -		if (err)
> +		if (err) {
> +			platform_device_unregister(&floppy_device[drive]);
> +			registered[drive] = false;
>  			goto out_remove_drives;
> +		}
>  	}
>  
>  	return 0;

Thanks,
Denis
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.