summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2026-10-29 16:03:35 +0100
committerJens Axboe <axboe@kernel.dk>2026-10-29 09:29:20 -0600
commit0c10f8a1a7ae1502ea4ea7e13f222df89c28adf4 (patch)
tree34704f641e555759d5afbb40f349d1b97feb76de
parent134ffb0755626c91af82fc7debc8b6f75f1f777e (diff)
downloadlinux-0c10f8a1a7ae1502ea4ea7e13f222df89c28adf4.tar.gz
linux-0c10f8a1a7ae1502ea4ea7e13f222df89c28adf4.zip
zloop: check that the zone backing file support ->{read,write}_iter
I/O to backing files requires support for iter based read/write, so check for that upfront instead of dereferencing a NULL pointer later. Fixes: eb0570c7df23 ("block: new zoned loop block device driver") Reported-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20261029150353.2503201-5-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/block/zloop.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/block/zloop.c b/drivers/block/zloop.c
index f0aca9d43851..65634a39b0bf 100644
--- a/drivers/block/zloop.c
+++ b/drivers/block/zloop.c
@@ -1132,6 +1132,11 @@ static int zloop_init_zone(struct zloop_device *zlo, struct zloop_options *opts,
return PTR_ERR(zone->file);
}
+ if (!zone->file->f_op->read_iter || !zone->file->f_op->write_iter) {
+ ret = -EINVAL;
+ goto out_fput;
+ }
+
if (zlo->block_size) {
ret = zloop_get_block_size(zlo, zone);
if (ret)