diff options
| author | Damien Le Moal <dlemoal@kernel.org> | 2025-11-19 13:34:23 +0900 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-11-19 07:39:42 -0700 |
| commit | a9637ab93c6cfdf7a80a299b7de691dea6a7d7ba (patch) | |
| tree | 1a60e148e9f479821d41a984f371e81d3fe20cb1 | |
| parent | ebcc028b4a3db7f4a76f97b05d746aa6ff1a56ab (diff) | |
zloop: fix zone append check in zloop_rw()
While commit cf28f6f923cb ("zloop: fail zone append operations that are
targeting full zones") added a check in zloop_rw() that a zone append is
not issued to a full zone, commit e3a96ca90462 ("zloop: simplify checks
for writes to sequential zones") inadvertently removed the check to
verify that there is enough unwritten space in a zone for an incoming
zone append opration.
Re-add this check in zloop_rw() to make sure we do not write beyond the
end of a zone. Of note is that this same check is already present in the
function zloop_set_zone_append_sector() when ordered zone append is in
use.
Reported-by: Hans Holmberg <Hans.Holmberg@wdc.com>
Fixes: e3a96ca90462 ("zloop: simplify checks for writes to sequential zones")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hans Holmberg <hans.holmberg@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
| -rw-r--r-- | drivers/block/zloop.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/block/zloop.c b/drivers/block/zloop.c index c4da3116f7a9..1273bbca7843 100644 --- a/drivers/block/zloop.c +++ b/drivers/block/zloop.c @@ -448,7 +448,8 @@ static void zloop_rw(struct zloop_cmd *cmd) * and set the target sector in zloop_queue_rq(). */ if (!zlo->ordered_zone_append) { - if (zone->cond == BLK_ZONE_COND_FULL) { + if (zone->cond == BLK_ZONE_COND_FULL || + zone->wp + nr_sectors > zone_end) { spin_unlock_irqrestore(&zone->wp_lock, flags); ret = -EIO; |
