From 314aec4a6e06844937f1677f6cba21981005f389 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 14 Feb 2019 11:10:04 +0800 Subject: hostmem-file: reject invalid pmem file sizes Guests started with NVDIMMs larger than the underlying host file produce confusing errors inside the guest. This happens because the guest accesses pages beyond the end of the file. Check the pmem file size on startup and print a clear error message if the size is invalid. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1669053 Cc: Wei Yang Cc: Zhang Yi Cc: Eduardo Habkost Cc: Igor Mammedov Signed-off-by: Stefan Hajnoczi Message-Id: <20190214031004.32522-3-stefanha@redhat.com> Reviewed-by: Wei Yang Reviewed-by: Igor Mammedov Reviewed-by: Pankaj Gupta Signed-off-by: Eduardo Habkost --- include/qemu/osdep.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'include/qemu/osdep.h') diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 840af09..303d315 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -571,6 +571,19 @@ void os_mem_prealloc(int fd, char *area, size_t sz, int smp_cpus, Error **errp); /** + * qemu_get_pmem_size: + * @filename: path to a pmem file + * @errp: pointer to a NULL-initialized error object + * + * Determine the size of a persistent memory file. Besides supporting files on + * DAX file systems, this function also supports Linux devdax character + * devices. + * + * Returns: the size or 0 on failure + */ +uint64_t qemu_get_pmem_size(const char *filename, Error **errp); + +/** * qemu_get_pid_name: * @pid: pid of a process * -- cgit v1.1