From e2373bd27fdc1ad87e584803f6f1ec7ecf8fee1e Mon Sep 17 00:00:00 2001 From: Masayoshi Mizuma Date: Wed, 26 May 2021 16:19:22 -0400 Subject: [PATCH] qemuDomainAttachDiskGenericTransient: Add NULL check in case the overlay disk already exists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When is set to a disk and the overlay disk already exists because of something abnormal, libvirt is terminated by Segmentation fault. # virsh start Test0 error: Disconnected from qemu:///system due to end of file error: Failed to start domain 'Test0' error: End of file while reading data: Input/output error Add NULL check for snapdiskdef so that the rollback can work correctly. Signed-off-by: Masayoshi Mizuma Fixes: 2e94002d2ace4e4a6dbfc13a84fdab28f22c5c4a Reviewed-by: Ján Tomko Signed-off-by: Ján Tomko --- src/qemu/qemu_hotplug.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 9ff6175dd3..0640cdd9f7 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -695,7 +695,9 @@ qemuDomainAttachDiskGenericTransient(virDomainObj *vm, g_autoptr(qemuSnapshotDiskContext) snapctxt = NULL; g_autoptr(virDomainSnapshotDiskDef) snapdiskdef = NULL; - snapdiskdef = qemuSnapshotGetTransientDiskDef(disk, vm->def->name); + if (!(snapdiskdef = qemuSnapshotGetTransientDiskDef(disk, vm->def->name))) + return NULL; + snapctxt = qemuSnapshotDiskContextNew(1, vm, asyncJob); if (qemuSnapshotDiskPrepareOne(snapctxt, disk, snapdiskdef,