From: Zhenzhong Duan <[email protected]>
Coverity detected an issue of left shifting int by more than 31 bits leading
to undefined behavior.
In practice bcontainer->dirty_pgsizes always have some common page sizes
when dirty tracking is supported.
Resolves: Coverity CID 1644186
Resolves: Coverity CID 1644187
Resolves: Coverity CID 1644188
Fixes: 46c763311419 ("vfio/migration: Add migration blocker if VM memory is too
large to cause unmap_bitmap failure").
Suggested-by: Cédric Le Goater <[email protected]>
Signed-off-by: Zhenzhong Duan <[email protected]>
Reviewed-by: Cédric Le Goater <[email protected]>
Link:
https://lore.kernel.org/qemu-devel/[email protected]
Signed-off-by: Cédric Le Goater <[email protected]>
---
hw/vfio/migration.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index
f857dc25ed4d0f824bdabc168228a5e925ac7dbe..b4695030c7295f318faf1d12ac48ba951aa943c7
100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -1173,7 +1173,7 @@ static bool vfio_dirty_tracking_exceed_limit(VFIODevice
*vbasedev)
* can also switch to use IOMMUFD backend if there is a need to migrate
* large VM.
*/
- page_size = 1 << ctz64(bcontainer->dirty_pgsizes);
+ page_size = 1ULL << ctz64(bcontainer->dirty_pgsizes);
max_size = bcontainer->max_dirty_bitmap_size * BITS_PER_BYTE * page_size;
return current_machine->ram_size > max_size;
--
2.52.0