]> xenbits.xensource.com Git - libvirt.git/commit
Fix potential deadlock across fork() in QEMU driver
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 11 Feb 2013 16:08:42 +0000 (16:08 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 12 Feb 2013 11:05:31 +0000 (11:05 +0000)
commit61b52d2e3813cc8c9ff3ab67f232bd0c65f7318d
treea5377a08050dcfa3d74a940186e3068592008c38
parent736a87b916530abbbea2ea47263521dbe463dc8c
Fix potential deadlock across fork() in QEMU driver

The hook scripts used by virCommand must be careful wrt
accessing any mutexes that may have been held by other
threads in the parent process. With the recent refactoring
there are 2 potential flaws lurking, which will become real
deadlock bugs once the global QEMU driver lock is removed.

Remove use of the QEMU driver lock from the hook function
by passing in the 'virQEMUDriverConfigPtr' instance directly.

Add functions to the virSecurityManager to be invoked before
and after fork, to ensure the mutex is held by the current
thread. This allows it to be safely used in the hook script
in the child process.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/libvirt_private.syms
src/qemu/qemu_process.c
src/security/security_manager.c
src/security/security_manager.h