]> xenbits.xensource.com Git - seabios.git/commit
virtio-blk: Fix integer overflow for large max IO sizes
authorLukas Stockner via SeaBIOS <seabios@seabios.org>
Tue, 6 Jun 2023 13:29:52 +0000 (15:29 +0200)
committerKevin O'Connor <kevin@koconnor.net>
Tue, 13 Jun 2023 15:11:25 +0000 (11:11 -0400)
commitcd933454b5e3e1f86379a44b5ae1852c2a01a485
tree52fbf10344dd3366213eaea5311f7e1d3e984f39
parent4db444b9a78abf9f6dc981f0e79db749765dc6e8
virtio-blk: Fix integer overflow for large max IO sizes

When the maximum IO size supported by the virtio-blk backend is large
enough (>= 32MiB for 512B sectors), the computed blk_num_max will
overflow. In particular, if it's a multiple of 32MiB, blk_num_max
will end up as zero, causing IO requests to fail.

This is triggered by e.g. the SPDK virtio-blk vhost-user backend.

To fix it, just limit blk_num_max to 65535 before converting to u16.

Signed-off-by: Lukas Stockner <lstockner@genesiscloud.com>
src/hw/virtio-blk.c