On 9/3/20 10:01 AM, Christoph Hellwig wrote:
The floppy driver usually autodetects the media when used with the
normal /dev/fd? devices, which also are the only nodes created by udev.
But it also supports various aliases that force a given media format.
That is currently supported using the blk_register_region framework
which finds the floppy gendisk even for a 'mismatched' dev_t.  The
problem with this (besides the code complexity) is that it creates
multiple struct block_device instances for the whole device of a
single gendisk, which can lead to interesting issues in code not
aware of that fact.

To fix this just create a separate gendisk for each of the aliases
if they are accessed.

Signed-off-by: Christoph Hellwig <h...@lst.de>
---
  drivers/block/floppy.c | 154 ++++++++++++++++++++++++++---------------
  1 file changed, 97 insertions(+), 57 deletions(-)

Reviewed-by: Hannes Reinecke <h...@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke                Kernel Storage Architect
h...@suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer

Reply via email to