[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20250425080305.45100-1-kevinpaul468@gmail.com>
Date: Fri, 25 Apr 2025 13:33:05 +0530
From: Kevin Paul Reddy Janagari <kevinpaul468@...il.com>
To: axboe@...nel.dk
Cc: linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org,
kevinpaul468@...il.com
Subject: [PATCH] block: make bio_check_eod work for zero sized devices
commit 3eb96946f0be6bf447cbdf219aba22bc42672f92 upstream
Since the dawn of time bio_check_eod has a check for a non-zero size of
the device. This doesn't really make any sense as we never want to send
I/O to a device that's been set to zero size, or never moved out of that.
I am a bit surprised we haven't caught this for a long time, but the
removal of the extra validation inside of zram caused syzbot to trip
over this issue recently. I've added a Fixes tag for that commit, but
the issue really goes back way before git history.
Signed-off-by: Kevin Paul Reddy Janagari <kevinpaul468@...il.com>
---
block/blk-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 94941e3ce219..6a66f4f6912f 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -515,7 +515,7 @@ static inline int bio_check_eod(struct bio *bio)
sector_t maxsector = bdev_nr_sectors(bio->bi_bdev);
unsigned int nr_sectors = bio_sectors(bio);
- if (nr_sectors && maxsector &&
+ if (nr_sectors &&
(nr_sectors > maxsector ||
bio->bi_iter.bi_sector > maxsector - nr_sectors)) {
pr_info_ratelimited("%s: attempt to access beyond end of device\n"
--
2.39.5
Powered by blists - more mailing lists