Skip to content

Commit ecc537e

Browse files
committed
chore(vmm): prohibit restoring from a file if secret free
This combination makes little sense. Signed-off-by: Nikita Kalyazin <[email protected]>
1 parent 5bcb80b commit ecc537e

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/vmm/src/persist.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use crate::utils::u64_to_usize;
3535
use crate::vmm_config::boot_source::BootSourceConfig;
3636
use crate::vmm_config::instance_info::InstanceInfo;
3737
use crate::vmm_config::machine_config::{HugePageConfig, MachineConfigError, MachineConfigUpdate};
38-
use crate::vmm_config::snapshot::{CreateSnapshotParams, LoadSnapshotParams};
38+
use crate::vmm_config::snapshot::{CreateSnapshotParams, LoadSnapshotParams, MemBackendType};
3939
use crate::vstate::kvm::KvmState;
4040
use crate::vstate::memory;
4141
use crate::vstate::memory::{GuestMemoryState, GuestRegionMmap, MemoryError};
@@ -385,6 +385,17 @@ pub fn restore_from_snapshot(
385385
vm_resources: &mut VmResources,
386386
) -> Result<Arc<Mutex<Vmm>>, RestoreFromSnapshotError> {
387387
let mut microvm_state = snapshot_state_from_file(&params.snapshot_path)?;
388+
389+
if microvm_state.vm_info.secret_free && params.mem_backend.backend_type == MemBackendType::File
390+
{
391+
return Err(RestoreFromSnapshotError::Build(
392+
BuildMicrovmFromSnapshotError::VmUpdateConfig(MachineConfigError::Incompatible(
393+
"secret freedon",
394+
"file memory backend",
395+
)),
396+
));
397+
}
398+
388399
for entry in &params.network_overrides {
389400
let net_devices = &mut microvm_state.device_states.net_devices;
390401
if let Some(device) = net_devices

0 commit comments

Comments
 (0)