From 4b5e2ef3a0c1c1d32fae232e1a2bd2b58e8a3e81 Mon Sep 17 00:00:00 2001 From: Julian Schindel Date: Wed, 22 Jul 2026 16:51:27 +0200 Subject: [PATCH] vmm: Lock disks after validating state change On `VM::boot` call, lock disks only after the state change has been checked for validity. Otherwise, on invalid state change, boot is aborted, but file locks aren't rolled back. On-behalf-of: SAP julian.schindel@sap.com Signed-off-by: Julian Schindel --- vmm/src/vm.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 9fd5d85b0..63a62d8a1 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -2749,14 +2749,6 @@ impl Vm { return self.resume().map_err(Error::Resume); } - // We acquire all advisory disk image locks here and not on device creation - // to enable live-migration without locking issues. - self.device_manager - .lock() - .unwrap() - .try_lock_disks() - .map_err(Error::LockingError)?; - let new_state = if self.stop_on_boot { VmState::BreakPoint } else { @@ -2765,6 +2757,14 @@ impl Vm { current_state.valid_transition(new_state)?; + // We acquire all advisory disk image locks here and not on device creation + // to enable live-migration without locking issues. + self.device_manager + .lock() + .unwrap() + .try_lock_disks() + .map_err(Error::LockingError)?; + #[cfg(feature = "fw_cfg")] { let fw_cfg_enabled = self