Commit b1211978 authored by Jonathan Derrick's avatar Jonathan Derrick Committed by Song Liu

md: Fix bitmap offset type in sb writer

Bitmap offset is allowed to be negative, indicating that bitmap precedes
metadata. Change the type back from sector_t to loff_t to satisfy
conditionals and calculations.
Reported-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/linux-raid/CAPhsuW6HuaUJ5WcyPajVgUfkQFYp2D_cy1g6qxN4CU_gP2=z7g@mail.gmail.com/
Fixes: 10172f20 ("md: Fix types in sb writer")
Signed-off-by: default avatarJonathan Derrick <jonathan.derrick@linux.dev>
Suggested-by: default avatarYu Kuai <yukuai3@huawei.com>
Reviewed-by: default avatarYu Kuai <yukuai3@huawei.com>
Signed-off-by: default avatarSong Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230425011438.71046-1-jonathan.derrick@linux.dev
parent fc05e06e
...@@ -219,7 +219,7 @@ static unsigned int optimal_io_size(struct block_device *bdev, ...@@ -219,7 +219,7 @@ static unsigned int optimal_io_size(struct block_device *bdev,
} }
static unsigned int bitmap_io_size(unsigned int io_size, unsigned int opt_size, static unsigned int bitmap_io_size(unsigned int io_size, unsigned int opt_size,
sector_t start, sector_t boundary) loff_t start, loff_t boundary)
{ {
if (io_size != opt_size && if (io_size != opt_size &&
start + opt_size / SECTOR_SIZE <= boundary) start + opt_size / SECTOR_SIZE <= boundary)
...@@ -237,8 +237,8 @@ static int __write_sb_page(struct md_rdev *rdev, struct bitmap *bitmap, ...@@ -237,8 +237,8 @@ static int __write_sb_page(struct md_rdev *rdev, struct bitmap *bitmap,
struct block_device *bdev; struct block_device *bdev;
struct mddev *mddev = bitmap->mddev; struct mddev *mddev = bitmap->mddev;
struct bitmap_storage *store = &bitmap->storage; struct bitmap_storage *store = &bitmap->storage;
sector_t offset = mddev->bitmap_info.offset; loff_t sboff, offset = mddev->bitmap_info.offset;
sector_t ps, sboff, doff; sector_t ps, doff;
unsigned int size = PAGE_SIZE; unsigned int size = PAGE_SIZE;
unsigned int opt_size = PAGE_SIZE; unsigned int opt_size = PAGE_SIZE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment