The return code from bdrv_nb_sectors() should be checked before doing the following sanity check.
Signed-off-by: Guoyi Tu <tu.gu...@h3c.com> --- block.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/block.c b/block.c index 430edf7..19ebbc0 100644 --- a/block.c +++ b/block.c @@ -5082,6 +5082,10 @@ int64_t bdrv_getlength(BlockDriverState *bs) { int64_t ret = bdrv_nb_sectors(bs); + if (ret < 0) { + return ret; + } + ret = ret > INT64_MAX / BDRV_SECTOR_SIZE ? -EFBIG : ret; return ret < 0 ? ret : ret * BDRV_SECTOR_SIZE; } -- 2.7.4 -- Best regards, Guoyi