On Sun, 2010-05-16 at 10:08 +0100, Daniel P. Berrange wrote:
On Fri, May 14, 2010 at 01:39:28PM -0400, Stefan Berger wrote:
> This adds a missing driver lock in the qemu driver to protect
> the list of domains.
>
> Signed-off-by: Stefan Berger <stefanb(a)us.ibm.com>
>
> ---
> src/qemu/qemu_driver.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> Index: libvirt-acl/src/qemu/qemu_driver.c
> ===================================================================
> --- libvirt-acl.orig/src/qemu/qemu_driver.c
> +++ libvirt-acl/src/qemu/qemu_driver.c
> @@ -11869,11 +11869,15 @@ static virStateDriver qemuStateDriver =
> };
>
> static int
> -qemudVMFilterRebuild(virConnectPtr conn,
> +qemudVMFilterRebuild(virConnectPtr conn ATTRIBUTE_UNUSED,
> virHashIterator iter, void *data)
> {
> - (void)conn;
> + struct qemud_driver *driver = qemu_driver;
> +
> + qemuDriverLock(driver);
> virHashForEach(qemu_driver->domains.objs, iter, data);
> + qemuDriverUnlock(driver);
> +
> return 0;
> }
ACK, traced back the code for 'iter' and that's already correctly locking
the elements when it accesses them, so this is only bit broken.
The above lock protects the hash table from manipulation while
traversing it.
Stefan