Преглед изворни кода

vm/qubesvm: fix race condition in failed startup handling

Instead of checking if domain is still running/paused, try to kill it
anyway and ignore appropriate exception. Otherwise domain could die
before the check and killing.
Marek Marczykowski-Górecki пре 5 година
родитељ
комит
a9ec2bb2c3
1 измењених фајлова са 3 додато и 1 уклоњено
  1. 3 1
      qubes/vm/qubesvm.py

+ 3 - 1
qubes/vm/qubesvm.py

@@ -1068,8 +1068,10 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
                 # This avoids losing the exception if an exception is
                 # raised in self.force_shutdown(), because the vm is not
                 # running or paused
-                if self.is_running() or self.is_paused():
+                try:
                     yield from self._kill_locked()
+                except qubes.exc.QubesVMNotStartedError:
+                    pass
 
                 # let anyone receiving domain-pre-start know that startup failed
                 yield from self.fire_event_async('domain-start-failed',