]> git.baikalelectronics.ru Git - kernel.git/commit
block: fix an integer overflow in logical block size
authorMikulas Patocka <mpatocka@redhat.com>
Wed, 15 Jan 2020 13:35:25 +0000 (08:35 -0500)
committerJens Axboe <axboe@kernel.dk>
Thu, 16 Jan 2020 04:43:09 +0000 (21:43 -0700)
commit47f50cdf5154eb9d03e6298a074d0e8d4f1b0e89
treef205d6e5e7679bad32bc676242018db08444d1ac
parent6e9653be3aea5a4f3ab25fd491a83f25e2fcd8df
block: fix an integer overflow in logical block size

Logical block size has type unsigned short. That means that it can be at
most 32768. However, there are architectures that can run with 64k pages
(for example arm64) and on these architectures, it may be possible to
create block devices with 64k block size.

For exmaple (run this on an architecture with 64k pages):

Mount will fail with this error because it tries to read the superblock using 2-sector
access:
  device-mapper: writecache: I/O is not aligned, sector 2, size 1024, block size 65536
  EXT4-fs (dm-0): unable to read superblock

This patch changes the logical block size from unsigned short to unsigned
int to avoid the overflow.

Cc: stable@vger.kernel.org
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-settings.c
drivers/md/dm-snap-persistent.c
drivers/md/raid0.c
include/linux/blkdev.h