diff --git a/kmod/src/block.c b/kmod/src/block.c index e0ac6590..81c43836 100644 --- a/kmod/src/block.c +++ b/kmod/src/block.c @@ -1239,7 +1239,12 @@ static int sm_block_io(struct super_block *sb, struct block_device *bdev, blk_op bio->bi_iter.bi_sector = blkno << (SCOUTFS_BLOCK_SM_SHIFT - 9); bio->bi_end_io = sm_block_bio_end_io; bio->bi_private = &sbc; - bio_add_page(bio, page, SCOUTFS_BLOCK_SM_SIZE, 0); + ret = bio_add_page(bio, page, SCOUTFS_BLOCK_SM_SIZE, 0); + if (ret != SCOUTFS_BLOCK_SM_SIZE) { + bio_put(bio); + ret = -EFAULT; + goto out; + } init_completion(&sbc.comp); sbc.err = 0;