Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

floppy: fix for PAGE_SIZE != 4KB

For years I wondered why the floppy driver does not just work on
sparc64, e.g:

root@SUNW_375_0066:# disktype /dev/fd0
disktype: Can't open /dev/fd0: No such device or address

[ 525.341906] disktype: attempt to access beyond end of device
fd0: rw=0, sector=0, nr_sectors = 16 limit=8
[ 525.341991] floppy: error 10 while reading block 0

Turns out floppy.c __floppy_read_block_0 tries to read one page for
the first test read to determine the disk size and thus fails if that
is greater than 4k. Adjust minimum MAX_DISK_SIZE to PAGE_SIZE to fix
floppy on sparc64 and likely all other PAGE_SIZE != 4KB configs.

Cc: stable@vger.kernel.org
Signed-off-by: René Rebe <rene@exactco.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Rene Rebe and committed by
Jens Axboe
82d20481 79bd8c98

+1 -1
+1 -1
drivers/block/floppy.c
··· 329 329 * This default is used whenever the current disk size is unknown. 330 330 * [Now it is rather a minimum] 331 331 */ 332 - #define MAX_DISK_SIZE 4 /* 3984 */ 332 + #define MAX_DISK_SIZE (PAGE_SIZE / 1024) 333 333 334 334 /* 335 335 * globals used by 'result()'