Merged update from upstream sources

This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/virt-manager.git#52737d0d3676305fdffc1db57dae8dd6fe71d83c
This commit is contained in:
DistroBaker 2021-01-11 19:02:01 +00:00
parent 4be2370918
commit c9a2e3af8e
2 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,44 @@
From 4d0e323227f18e58283c45be4d240b506faacb22 Mon Sep 17 00:00:00 2001
Message-Id: <4d0e323227f18e58283c45be4d240b506faacb22.1610390294.git.crobinso@redhat.com>
From: Martin Pitt <martin@piware.de>
Date: Tue, 24 Nov 2020 14:24:06 +0100
Subject: [PATCH virt-manager] virtinst: Fix TOCTOU in domain enumeration
Similar to commit 49a01b5482, _fetch_all_domains_raw() has a race
condition where a domain may disappear (from parallel libvirt
operations) in between enumerating and inspecting the objects.
Ignore these missing domains instead of crashing.
https://bugzilla.redhat.com/show_bug.cgi?id=1901081
Signed-off-by: Cole Robinson <crobinso@redhat.com>
---
virtinst/connection.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/virtinst/connection.py b/virtinst/connection.py
index fec273b7..06bc60ad 100644
--- a/virtinst/connection.py
+++ b/virtinst/connection.py
@@ -182,8 +182,16 @@ class VirtinstConnection(object):
def _fetch_all_domains_raw(self):
dummy1, dummy2, ret = pollhelpers.fetch_vms(
self, {}, lambda obj, ignore: obj)
- return [Guest(weakref.proxy(self), parsexml=obj.XMLDesc(0))
- for obj in ret]
+ domains = []
+ for obj in ret:
+ # TOCTOU race: a domain may go away in between enumeration and inspection
+ try:
+ xml = obj.XMLDesc(0)
+ except libvirt.libvirtError as e: # pragma: no cover
+ log.debug("Fetching domain XML failed: %s", e)
+ continue
+ domains.append(Guest(weakref.proxy(self), parsexml=xml))
+ return domains
def _build_pool_raw(self, poolobj):
return StoragePool(weakref.proxy(self),
--
2.29.2

View File

@ -8,7 +8,7 @@
Name: virt-manager
Version: 3.2.0
Release: 1%{?dist}
Release: 2%{?dist}
%global verrel %{version}-%{release}
Summary: Desktop tool for managing virtual machines via libvirt
@ -17,6 +17,9 @@ BuildArch: noarch
URL: https://virt-manager.org/
Source0: https://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz
# Fix 'domain not found' race (bz #1901081)
Patch0001: 0001-virtinst-Fix-TOCTOU-in-domain-enumeration.patch
Requires: virt-manager-common = %{verrel}
Requires: python3-gobject
@ -167,6 +170,9 @@ done
%changelog
* Mon Jan 11 2021 Cole Robinson <crobinso@redhat.com> - 3.2.0-2
- Fix 'domain not found' race (bz #1901081)
* Sat Nov 14 2020 Cole Robinson <crobinso@redhat.com> - 3.2.0-1
- Update to version 3.2.0
- Slim down filesystem device editor UI