@@ -35,7 +35,7 @@ use crate::utils::u64_to_usize;
3535use crate :: vmm_config:: boot_source:: BootSourceConfig ;
3636use crate :: vmm_config:: instance_info:: InstanceInfo ;
3737use 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 } ;
3939use crate :: vstate:: kvm:: KvmState ;
4040use crate :: vstate:: memory;
4141use 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