Message ID | 20210331142727.391465-1-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Series | block/export: improve vu_blk_sect_range_ok() | expand |
On 3/31/21 9:27 AM, Stefan Hajnoczi wrote: > The checks in vu_blk_sect_range_ok() assume VIRTIO_BLK_SECTOR_SIZE is > equal to BDRV_SECTOR_SIZE. This is true, but let's add a > QEMU_BUILD_BUG_ON() to make it explicit. > > We might as well check that the request buffer size is a multiple of > VIRTIO_BLK_SECTOR_SIZE while we're at it. > > Suggested-by: Max Reitz <mreitz@redhat.com> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > block/export/vhost-user-blk-server.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) Reviewed-by: Eric Blake <eblake@redhat.com>
On Wed, Mar 31, 2021 at 03:27:27PM +0100, Stefan Hajnoczi wrote: > The checks in vu_blk_sect_range_ok() assume VIRTIO_BLK_SECTOR_SIZE is > equal to BDRV_SECTOR_SIZE. This is true, but let's add a > QEMU_BUILD_BUG_ON() to make it explicit. > > We might as well check that the request buffer size is a multiple of > VIRTIO_BLK_SECTOR_SIZE while we're at it. > > Suggested-by: Max Reitz <mreitz@redhat.com> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > block/export/vhost-user-blk-server.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) Ping for QEMU 6.1. Stefan > > diff --git a/block/export/vhost-user-blk-server.c b/block/export/vhost-user-blk-server.c > index fa06996d37..1862563336 100644 > --- a/block/export/vhost-user-blk-server.c > +++ b/block/export/vhost-user-blk-server.c > @@ -70,9 +70,16 @@ static void vu_blk_req_complete(VuBlkReq *req) > static bool vu_blk_sect_range_ok(VuBlkExport *vexp, uint64_t sector, > size_t size) > { > - uint64_t nb_sectors = size >> BDRV_SECTOR_BITS; > + uint64_t nb_sectors; > uint64_t total_sectors; > > + if (size % VIRTIO_BLK_SECTOR_SIZE) { > + return false; > + } > + > + nb_sectors = size >> VIRTIO_BLK_SECTOR_BITS; > + > + QEMU_BUILD_BUG_ON(BDRV_SECTOR_SIZE != VIRTIO_BLK_SECTOR_SIZE); > if (nb_sectors > BDRV_REQUEST_MAX_SECTORS) { > return false; > } > -- > 2.30.2 >
Am 11.05.2021 um 10:25 hat Stefan Hajnoczi geschrieben: > On Wed, Mar 31, 2021 at 03:27:27PM +0100, Stefan Hajnoczi wrote: > > The checks in vu_blk_sect_range_ok() assume VIRTIO_BLK_SECTOR_SIZE is > > equal to BDRV_SECTOR_SIZE. This is true, but let's add a > > QEMU_BUILD_BUG_ON() to make it explicit. > > > > We might as well check that the request buffer size is a multiple of > > VIRTIO_BLK_SECTOR_SIZE while we're at it. > > > > Suggested-by: Max Reitz <mreitz@redhat.com> > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > > --- > > block/export/vhost-user-blk-server.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > Ping for QEMU 6.1. Thanks, applied to the block branch. Kevin
diff --git a/block/export/vhost-user-blk-server.c b/block/export/vhost-user-blk-server.c index fa06996d37..1862563336 100644 --- a/block/export/vhost-user-blk-server.c +++ b/block/export/vhost-user-blk-server.c @@ -70,9 +70,16 @@ static void vu_blk_req_complete(VuBlkReq *req) static bool vu_blk_sect_range_ok(VuBlkExport *vexp, uint64_t sector, size_t size) { - uint64_t nb_sectors = size >> BDRV_SECTOR_BITS; + uint64_t nb_sectors; uint64_t total_sectors; + if (size % VIRTIO_BLK_SECTOR_SIZE) { + return false; + } + + nb_sectors = size >> VIRTIO_BLK_SECTOR_BITS; + + QEMU_BUILD_BUG_ON(BDRV_SECTOR_SIZE != VIRTIO_BLK_SECTOR_SIZE); if (nb_sectors > BDRV_REQUEST_MAX_SECTORS) { return false; }
The checks in vu_blk_sect_range_ok() assume VIRTIO_BLK_SECTOR_SIZE is equal to BDRV_SECTOR_SIZE. This is true, but let's add a QEMU_BUILD_BUG_ON() to make it explicit. We might as well check that the request buffer size is a multiple of VIRTIO_BLK_SECTOR_SIZE while we're at it. Suggested-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block/export/vhost-user-blk-server.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)