On Mon, Sep 07, 2026 at 01:07:40PM +0200, Niklas Cassel wrote: > All VIRTIO_BLK_T_OUT requests issued to sequential zones and all > VIRTIO_BLK_T_ZONE_APPEND requests must have an offset and a data size > that are multiples of the write granularity reported by the device > (virtio 1.4, 5.2.6.1), and a violation is reported as > VIRTIO_BLK_S_ZONE_UNALIGNED_WP (virtio 1.4, 5.2.6). > > Neither request type was fully checked. Zone appends validated only the > offset, while writes were not checked at all. > > Check the size of the appended data, and both the offset and the size of > a write, against blkconf_zone_write_granularity(), so that every request the > device accepts is one that the guest driver was told is valid. Writes to > conventional zones keep no alignment constraint beyond the logical block > size. The write path performs the check after virtio_blk_sect_range_ok() > so that the zone index derived from the guest supplied sector is known to > be in range. > > Reviewed-by: Damien Le Moal <[email protected]> > Signed-off-by: Niklas Cassel <[email protected]> > --- > hw/block/virtio-blk.c | 38 +++++++++++++++++++++++++++++++++++++- > 1 file changed, 37 insertions(+), 1 deletion(-)
Reviewed-by: Stefan Hajnoczi <[email protected]>
signature.asc
Description: PGP signature
