libvirt/src/qemu
Peter Krempa b952cbbcca qemu: Avoid operations on NULL monitor if VM fails early
https://bugzilla.redhat.com/show_bug.cgi?id=1047659

If a VM dies very early during an attempted connect to the guest agent
while the locks are down the domain monitor object will be freed. The
object is then accessed later as any failure during guest agent startup
isn't considered fatal.

In the current upstream version this doesn't lead to a crash as
virObjectLock called when entering the monitor in
qemuProcessDetectVcpuPIDs checks the pointer before attempting to
dereference (lock) it. The NULL pointer is then caught in the monitor
helper code.

Before the introduction of virObjectLockable - observed on 0.10.2 - the
pointer is locked directly via virMutexLock leading to a crash.

To avoid this problem we need to differentiate between the guest agent
not being present and the VM quitting when the locks were down. The fix
reorganizes the code in qemuConnectAgent to add the check and then adds
special handling to the callers.
2014-01-15 18:04:25 +01:00
..
libvirtd_qemu.aug qemu: Fix augeas support for migration ports 2013-10-18 18:30:13 +02:00
MIGRATION.txt qemu: Implement migration job phases 2011-07-27 08:45:09 -06:00
qemu_agent.c qemuAgentDispose: Reset lastError 2013-12-04 14:43:54 -07:00
qemu_agent.h qemu_agent: Move updater function for VCPU hotplug into qemu_agent.c 2013-07-31 14:25:43 +02:00
qemu_bridge_filter.c maint: avoid 'const fooPtr' in qemu 2013-10-14 14:34:38 -06:00
qemu_bridge_filter.h maint: avoid 'const fooPtr' in qemu 2013-10-14 14:34:38 -06:00
qemu_capabilities.c Fix segmentation fault when accessing default qemu machine type 2014-01-07 15:26:12 +01:00
qemu_capabilities.h qemu: ask for -enable-fips when FIPS is required 2013-12-18 07:05:29 -07:00
qemu_cgroup.c rename virBlkioDeviceWeightPtr to virBlkioDevicePtr 2013-12-12 12:29:59 +00:00
qemu_cgroup.h Auto-detect existing cgroup placement 2013-07-23 22:46:31 +01:00
qemu_command.c qemuBuildNicDevStr: Set vectors= on Multiqueue 2014-01-09 15:23:57 +01:00
qemu_command.h qemuBuildNicDevStr: Set vectors= on Multiqueue 2014-01-09 15:23:57 +01:00
qemu_conf.c qemu: Fix indentation in qemuTranslateDiskSourcePool 2013-12-05 12:05:08 +01:00
qemu_conf.h Renamed virDomainEventState to virObjectEventState 2013-12-10 11:35:34 +00:00
qemu_domain.c AArch64: Porting of armv7l conditons to run qemu for aarch64. 2014-01-06 11:02:24 -05:00
qemu_domain.h Use virObjectEventPtr instead of virDomainEventPtr 2013-12-10 12:45:21 +00:00
qemu_driver.c qemu: Fix job usage in virDomainGetBlockIoTune 2014-01-07 16:12:11 +01:00
qemu_driver.h maint: fix up copyright notice inconsistencies 2012-09-20 16:30:55 -06:00
qemu_hostdev.c qemu: default to vfio for nodedev-detach 2013-12-03 11:58:26 +02:00
qemu_hostdev.h qemu: default to vfio for nodedev-detach 2013-12-03 11:58:26 +02:00
qemu_hotplug.c qemuBuildNicDevStr: Set vectors= on Multiqueue 2014-01-09 15:23:57 +01:00
qemu_hotplug.h qemu: hotplug: Mark 2 private functions as static 2013-12-05 15:34:54 -05:00
qemu_hotplugpriv.h qemu: Let tests override waiting time for device unplug 2013-08-26 16:09:55 +02:00
qemu_migration.c Fix argument order of qemuMigrationPerformJob(). 2014-01-07 13:59:50 +01:00
qemu_migration.h qemu: Implement support for VIR_MIGRATE_PARAM_LISTEN_ADDRESS 2013-10-11 11:08:55 +02:00
qemu_monitor_json.c qemuMonitorJSONGetCPUx86Data: Don't fail on ancient qemus 2013-11-19 16:28:16 +01:00
qemu_monitor_json.h qemu: Change return type of qemuMonitorGetGuestCPU() 2013-11-12 19:35:51 +01:00
qemu_monitor_text.c Convert 'int i' to 'size_t i' in src/qemu files 2013-07-10 17:55:15 +01:00
qemu_monitor_text.h qemu: Use bool instead of int in qemuMonitorSetCPU APIs 2013-06-07 15:57:03 +02:00
qemu_monitor.c object: require maximal alignment in base class 2013-12-13 05:59:38 -07:00
qemu_monitor.h Fix migration with QEMU 1.6 2013-11-15 13:50:47 +01:00
qemu_process.c qemu: Avoid operations on NULL monitor if VM fails early 2014-01-15 18:04:25 +01:00
qemu_process.h qemu_process: Make qemuProcessReadLog() more versatile and reusable 2013-09-25 13:50:56 +02:00
qemu_processpriv.h qemu: Export qemuProcessHandleDeviceDeleted for tests 2013-08-26 16:09:55 +02:00
qemu.conf docs: grammar fixes 2013-11-08 10:37:06 -07:00
test_libvirtd_qemu.aug.in qemu: Fix augeas support for migration ports 2013-10-18 18:30:13 +02:00
THREADS.txt Remove qemuDriverLock from almost everywhere 2013-02-13 11:10:30 +00:00