From 7f7c3fc8ec437fa91e74987fc3eee09f9ccae8a0 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Thu, 6 May 2021 10:44:06 +0800 Subject: [PATCH] qemu.go: qemu: resizeMemory: Fix virtio-mem resize overflow issue This commit change sizeByte from uint32 to uint64 to fix overflow issue. Fixes: #1796 Signed-off-by: Hui Zhu --- src/runtime/virtcontainers/qemu.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 5be0fe2c9..c5b26facf 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -2043,8 +2043,9 @@ func (q *qemu) resizeMemory(ctx context.Context, reqMemMB uint32, memoryBlockSiz var addMemDevice memoryDevice if q.config.VirtioMem && currentMemory != reqMemMB { q.Logger().WithField("hotplug", "memory").Debugf("resize memory from %dMB to %dMB", currentMemory, reqMemMB) - sizeByte := (reqMemMB - q.config.MemorySize) * 1024 * 1024 - err := q.qmpMonitorCh.qmp.ExecQomSet(q.qmpMonitorCh.ctx, "virtiomem0", "requested-size", uint64(sizeByte)) + sizeByte := uint64(reqMemMB - q.config.MemorySize) + sizeByte = sizeByte * 1024 * 1024 + err := q.qmpMonitorCh.qmp.ExecQomSet(q.qmpMonitorCh.ctx, "virtiomem0", "requested-size", sizeByte) if err != nil { return 0, memoryDevice{}, err }