aboutsummaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorHaozhong Zhang <haozhong.zhang@intel.com>2016-11-02 09:05:51 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2016-11-02 09:28:51 +0100
commit1775f111eaf7f49efcec30152db44a184c1e2222 (patch)
tree8ac5093c8a97e358f40c725f4a11f9043034a238 /exec.c
parentd6af99c9f8d577927a52d00af3fa8e6ec0b2a4e2 (diff)
exec.c: check memory backend file size with 'size' option
If the memory backend file is not large enough to hold the required 'size', Qemu will report error and exit. Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> Message-Id: <20161027042300.5929-3-haozhong.zhang@intel.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Message-Id: <20161102010551.2723-1-haozhong.zhang@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/exec.c b/exec.c
index f471e7377a..f3c2770d54 100644
--- a/exec.c
+++ b/exec.c
@@ -1321,6 +1321,13 @@ static void *file_ram_alloc(RAMBlock *block,
goto error;
}
+ if (file_size > 0 && file_size < memory) {
+ error_setg(errp, "backing store %s size 0x%" PRIx64
+ " does not match 'size' option 0x" RAM_ADDR_FMT,
+ path, file_size, memory);
+ goto error;
+ }
+
memory = ROUND_UP(memory, block->page_size);
/*