From 9c5be6f660e5ea7641742d682bc6a1d56c0fead1 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Thu, 11 Feb 2021 16:00:53 +0000 Subject: [PATCH] build: Remove unnecessary Result<> returns If the function can never return an error this is now a clippy failure: error: this function's return value is unnecessarily wrapped by `Result` --> virtio-devices/src/watchdog.rs:215:5 | 215 | / fn set_state(&mut self, state: &WatchdogState) -> io::Result<()> { 216 | | self.common.avail_features = state.avail_features; 217 | | self.common.acked_features = state.acked_features; 218 | | // When restoring enable the watchdog if it was previously enabled. We reset the timer ... | 223 | | Ok(()) 224 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps Signed-off-by: Rob Bradford --- arch/src/x86_64/mod.rs | 25 +-- .../src/arch/x86/emulator/instructions/cmp.rs | 24 +-- .../src/arch/x86/emulator/instructions/mov.rs | 68 ++------ hypervisor/src/arch/x86/emulator/mod.rs | 12 +- hypervisor/src/mshv/mod.rs | 6 +- tests/integration.rs | 133 +++++---------- virtio-devices/src/block.rs | 9 +- virtio-devices/src/console.rs | 9 +- virtio-devices/src/iommu.rs | 9 +- virtio-devices/src/net.rs | 9 +- virtio-devices/src/pmem.rs | 9 +- virtio-devices/src/rng.rs | 8 +- virtio-devices/src/seccomp_filters.rs | 161 +++++++++--------- virtio-devices/src/vsock/device.rs | 9 +- virtio-devices/src/watchdog.rs | 8 +- vmm/src/config.rs | 7 +- vmm/src/cpu.rs | 8 +- vmm/src/device_manager.rs | 8 +- vmm/src/lib.rs | 10 +- 19 files changed, 198 insertions(+), 334 deletions(-) diff --git a/arch/src/x86_64/mod.rs b/arch/src/x86_64/mod.rs index 0e6cb4538..b4487fa01 100644 --- a/arch/src/x86_64/mod.rs +++ b/arch/src/x86_64/mod.rs @@ -516,7 +516,7 @@ fn configure_pvh( let mut memmap: Vec = Vec::new(); // Create the memory map entries. - add_memmap_entry(&mut memmap, 0, layout::EBDA_START.raw_value(), E820_RAM)?; + add_memmap_entry(&mut memmap, 0, layout::EBDA_START.raw_value(), E820_RAM); let mem_end = guest_mem.last_addr(); @@ -526,21 +526,21 @@ fn configure_pvh( layout::HIGH_RAM_START.raw_value(), mem_end.unchecked_offset_from(layout::HIGH_RAM_START) + 1, E820_RAM, - )?; + ); } else { add_memmap_entry( &mut memmap, layout::HIGH_RAM_START.raw_value(), layout::MEM_32BIT_RESERVED_START.unchecked_offset_from(layout::HIGH_RAM_START), E820_RAM, - )?; + ); if mem_end > layout::RAM_64BIT_START { add_memmap_entry( &mut memmap, layout::RAM_64BIT_START.raw_value(), mem_end.unchecked_offset_from(layout::RAM_64BIT_START) + 1, E820_RAM, - )?; + ); } } @@ -549,7 +549,7 @@ fn configure_pvh( layout::PCI_MMCONFIG_START.0, layout::PCI_MMCONFIG_SIZE, E820_RESERVED, - )?; + ); if let Some(sgx_epc_region) = sgx_epc_region { add_memmap_entry( @@ -557,7 +557,7 @@ fn configure_pvh( sgx_epc_region.start().raw_value(), sgx_epc_region.size() as u64, E820_RESERVED, - )?; + ); } start_info.0.memmap_entries = memmap.len() as u32; @@ -602,12 +602,7 @@ fn configure_pvh( Ok(()) } -fn add_memmap_entry( - memmap: &mut Vec, - addr: u64, - size: u64, - mem_type: u32, -) -> Result<(), Error> { +fn add_memmap_entry(memmap: &mut Vec, addr: u64, size: u64, mem_type: u32) { // Add the table entry to the vector memmap.push(hvm_memmap_table_entry { addr, @@ -615,8 +610,6 @@ fn add_memmap_entry( type_: mem_type, reserved: 0, }); - - Ok(()) } fn configure_64bit_boot( @@ -1092,8 +1085,8 @@ mod tests { }, ]; - add_memmap_entry(&mut memmap, 0, 0x1000, E820_RAM).unwrap(); - add_memmap_entry(&mut memmap, 0x10000, 0xa000, E820_RESERVED).unwrap(); + add_memmap_entry(&mut memmap, 0, 0x1000, E820_RAM); + add_memmap_entry(&mut memmap, 0x10000, 0xa000, E820_RESERVED); assert_eq!(format!("{:?}", memmap), format!("{:?}", expected_memmap)); } diff --git a/hypervisor/src/arch/x86/emulator/instructions/cmp.rs b/hypervisor/src/arch/x86/emulator/instructions/cmp.rs index 82559f235..30e11cedb 100644 --- a/hypervisor/src/arch/x86/emulator/instructions/cmp.rs +++ b/hypervisor/src/arch/x86/emulator/instructions/cmp.rs @@ -224,7 +224,7 @@ mod tests { #[test] // cmp ah,al - fn test_cmp_rm8_r8_1() -> MockResult { + fn test_cmp_rm8_r8_1() { let rax: u64 = 0x0; let ip: u64 = 0x1000; let cpu_id = 0; @@ -234,13 +234,11 @@ mod tests { let rflags: u64 = vmm.cpu_state(cpu_id).unwrap().flags() & FLAGS_MASK; assert_eq!(0b1000100, rflags); - - Ok(()) } #[test] // cmp eax,100 - fn test_cmp_rm32_imm8_1() -> MockResult { + fn test_cmp_rm32_imm8_1() { let rax: u64 = 0xabcdef; let ip: u64 = 0x1000; let cpu_id = 0; @@ -250,13 +248,11 @@ mod tests { let rflags: u64 = vmm.cpu_state(cpu_id).unwrap().flags() & FLAGS_MASK; assert_eq!(0b100, rflags); - - Ok(()) } #[test] // cmp eax,-1 - fn test_cmp_rm32_imm8_2() -> MockResult { + fn test_cmp_rm32_imm8_2() { let rax: u64 = 0xabcdef; let ip: u64 = 0x1000; let cpu_id = 0; @@ -266,13 +262,11 @@ mod tests { let rflags: u64 = vmm.cpu_state(cpu_id).unwrap().flags() & FLAGS_MASK; assert_eq!(0b101, rflags); - - Ok(()) } #[test] // cmp rax,rbx - fn test_cmp_rm64_r64() -> MockResult { + fn test_cmp_rm64_r64() { let rax: u64 = 0xabcdef; let rbx: u64 = 0x1234; let ip: u64 = 0x1000; @@ -283,12 +277,10 @@ mod tests { let rflags: u64 = vmm.cpu_state(cpu_id).unwrap().flags() & FLAGS_MASK; assert_eq!(0b100, rflags); - - Ok(()) } #[test] - fn test_cmp_64() -> MockResult { + fn test_cmp_64() { let data = [ (0xabcdef, 0x1234, 0b100), (0x0, 0x101, 0b1001_0101), @@ -313,12 +305,10 @@ mod tests { let rflags: u64 = vmm.cpu_state(0).unwrap().flags() & FLAGS_MASK; assert_eq!(d.2, rflags); } - - Ok(()) } #[test] - fn test_cmp_32() -> MockResult { + fn test_cmp_32() { let data = [ (0xabcdef, 0x1234, 0b100), (0x0, 0x101, 0b1001_0101), @@ -343,7 +333,5 @@ mod tests { let rflags: u64 = vmm.cpu_state(0).unwrap().flags() & FLAGS_MASK; assert_eq!(d.2, rflags); } - - Ok(()) } } diff --git a/hypervisor/src/arch/x86/emulator/instructions/mov.rs b/hypervisor/src/arch/x86/emulator/instructions/mov.rs index da1e2f956..a6210e350 100644 --- a/hypervisor/src/arch/x86/emulator/instructions/mov.rs +++ b/hypervisor/src/arch/x86/emulator/instructions/mov.rs @@ -249,7 +249,7 @@ mod tests { #[test] // mov rax,rbx - fn test_mov_r64_r64() -> MockResult { + fn test_mov_r64_r64() { let rbx: u64 = 0x8899aabbccddeeff; let ip: u64 = 0x1000; let cpu_id = 0; @@ -263,13 +263,11 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, rbx); - - Ok(()) } #[test] // mov rax,0x1122334411223344 - fn test_mov_r64_imm64() -> MockResult { + fn test_mov_r64_imm64() { let imm64: u64 = 0x1122334411223344; let ip: u64 = 0x1000; let cpu_id = 0; @@ -283,13 +281,11 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, imm64); - - Ok(()) } #[test] // mov rax, [rax+rax] - fn test_mov_r64_m64() -> MockResult { + fn test_mov_r64_m64() { let target_rax: u64 = 0x1234567812345678; let mut rax: u64 = 0x100; let ip: u64 = 0x1000; @@ -305,13 +301,11 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, target_rax); - - Ok(()) } #[test] // mov al,0x11 - fn test_mov_r8_imm8() -> MockResult { + fn test_mov_r8_imm8() { let imm8: u8 = 0x11; let ip: u64 = 0x1000; let cpu_id = 0; @@ -325,13 +319,11 @@ mod tests { .read_reg(Register::AL) .unwrap(); assert_eq!(al as u8, imm8); - - Ok(()) } #[test] // mov eax,0x11 - fn test_mov_r32_imm8() -> MockResult { + fn test_mov_r32_imm8() { let imm8: u8 = 0x11; let ip: u64 = 0x1000; let cpu_id = 0; @@ -345,13 +337,11 @@ mod tests { .read_reg(Register::EAX) .unwrap(); assert_eq!(eax as u8, imm8); - - Ok(()) } #[test] // mov rax,0x11223344 - fn test_mov_r64_imm32() -> MockResult { + fn test_mov_r64_imm32() { let imm32: u32 = 0x11223344; let ip: u64 = 0x1000; let cpu_id = 0; @@ -365,13 +355,11 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, imm32 as u64); - - Ok(()) } #[test] // mov byte ptr [rax],dh - fn test_mov_m8_r8() -> MockResult { + fn test_mov_m8_r8() { let rax: u64 = 0x100; let dh: u8 = 0x99; let ip: u64 = 0x1000; @@ -388,13 +376,11 @@ mod tests { vmm.read_memory(rax, &mut memory).unwrap(); assert_eq!(u8::from_le_bytes(memory), dh); - - Ok(()) } #[test] // mov dword ptr [rax],esi - fn test_mov_m32_r32() -> MockResult { + fn test_mov_m32_r32() { let rax: u64 = 0x100; let esi: u32 = 0x8899; let ip: u64 = 0x1000; @@ -411,13 +397,11 @@ mod tests { vmm.read_memory(rax, &mut memory).unwrap(); assert_eq!(u32::from_le_bytes(memory), esi); - - Ok(()) } #[test] // mov dword ptr [rax+0x00000001],edi - fn test_mov_m32imm32_r32() -> MockResult { + fn test_mov_m32imm32_r32() { let rax: u64 = 0x100; let displacement: u64 = 0x1; let edi: u32 = 0x8899; @@ -435,13 +419,11 @@ mod tests { vmm.read_memory(rax + displacement, &mut memory).unwrap(); assert_eq!(u32::from_le_bytes(memory), edi); - - Ok(()) } #[test] // mov eax,dword ptr [rax+10h] - fn test_mov_r32_m32imm32() -> MockResult { + fn test_mov_r32_m32imm32() { let rax: u64 = 0x100; let displacement: u64 = 0x10; let eax: u32 = 0xaabbccdd; @@ -462,13 +444,11 @@ mod tests { .read_reg(Register::EAX) .unwrap(); assert_eq!(new_eax, eax as u64); - - Ok(()) } #[test] // mov al,byte ptr [rax+10h] - fn test_mov_r8_m32imm32() -> MockResult { + fn test_mov_r8_m32imm32() { let rax: u64 = 0x100; let displacement: u64 = 0x10; let al: u8 = 0xaa; @@ -489,14 +469,12 @@ mod tests { .read_reg(Register::AL) .unwrap(); assert_eq!(new_al, al as u64); - - Ok(()) } #[test] // mov rax, 0x100 // mov rbx, qword ptr [rax+10h] - fn test_mov_r64_imm64_and_r64_m64() -> MockResult { + fn test_mov_r64_imm64_and_r64_m64() { let target_rax: u64 = 0x1234567812345678; let rax: u64 = 0x100; let displacement: u64 = 0x10; @@ -516,14 +494,12 @@ mod tests { .read_reg(Register::RBX) .unwrap(); assert_eq!(rbx, target_rax); - - Ok(()) } #[test] // mov rax, 0x100 // mov rbx, qword ptr [rax+10h] - fn test_mov_r64_imm64_and_r64_m64_first_insn() -> MockResult { + fn test_mov_r64_imm64_and_r64_m64_first_insn() { let target_rax: u64 = 0x1234567812345678; let rax: u64 = 0x100; let displacement: u64 = 0x10; @@ -547,15 +523,13 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, new_rax); - - Ok(()) } #[test] // mov rax, 0x100 // mov rbx, qword ptr [rax+10h] // mov rax, 0x200 - fn test_mov_r64_imm64_and_r64_m64_two_insns() -> MockResult { + fn test_mov_r64_imm64_and_r64_m64_two_insns() { let target_rax: u64 = 0x1234567812345678; let rax: u64 = 0x100; let displacement: u64 = 0x10; @@ -588,13 +562,11 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, new_rax); - - Ok(()) } #[test] // movzx eax, bl - fn test_movzx_r32_r8l() -> MockResult { + fn test_movzx_r32_r8l() { let bx: u16 = 0x8899; let ip: u64 = 0x1000; let cpu_id = 0; @@ -608,13 +580,11 @@ mod tests { .read_reg(Register::EAX) .unwrap(); assert_eq!(eax, (bx & 0xff) as u64); - - Ok(()) } #[test] // movzx eax, bh - fn test_movzx_r32_r8h() -> MockResult { + fn test_movzx_r32_r8h() { let bx: u16 = 0x8899; let ip: u64 = 0x1000; let cpu_id = 0; @@ -628,13 +598,11 @@ mod tests { .read_reg(Register::EAX) .unwrap(); assert_eq!(eax, (bx >> 8) as u64); - - Ok(()) } #[test] // movzx eax, byte ptr [rbx] - fn test_movzx_r32_m8() -> MockResult { + fn test_movzx_r32_m8() { let rbx: u64 = 0x100; let value: u8 = 0xaa; let ip: u64 = 0x1000; @@ -650,7 +618,5 @@ mod tests { .read_reg(Register::EAX) .unwrap(); assert_eq!(eax, value as u64); - - Ok(()) } } diff --git a/hypervisor/src/arch/x86/emulator/mod.rs b/hypervisor/src/arch/x86/emulator/mod.rs index 7112cc4e8..f32457e2e 100644 --- a/hypervisor/src/arch/x86/emulator/mod.rs +++ b/hypervisor/src/arch/x86/emulator/mod.rs @@ -773,7 +773,7 @@ mod tests { // // mov rax, 0x1000 // Test with a first instruction truncated. - fn test_fetch_first_instruction() -> MockResult { + fn test_fetch_first_instruction() { let ip: u64 = 0x1000; let cpu_id = 0; let memory = [ @@ -799,8 +799,6 @@ mod tests { .read_reg(Register::RAX) .unwrap(); assert_eq!(rax, ip); - - Ok(()) } #[test] @@ -809,7 +807,7 @@ mod tests { // mov rax, 0x1000 // mov rbx, qword ptr [rax+10h] // Test with a 2nd instruction truncated. - fn test_fetch_second_instruction() -> MockResult { + fn test_fetch_second_instruction() { let target_rax: u64 = 0x1234567812345678; let ip: u64 = 0x1000; let cpu_id = 0; @@ -836,8 +834,6 @@ mod tests { .read_reg(Register::RBX) .unwrap(); assert_eq!(rbx, target_rax); - - Ok(()) } #[test] @@ -846,7 +842,7 @@ mod tests { // mov rax, 0x1000 // Test with a first instruction truncated and a bad fetched instruction. // Verify that the instruction emulation returns an error. - fn test_fetch_bad_insn() -> MockResult { + fn test_fetch_bad_insn() { let ip: u64 = 0x1000; let cpu_id = 0; let memory = [ @@ -861,7 +857,5 @@ mod tests { let mut vmm = MockVMM::new(ip, vec![], Some((ip, &memory))); assert!(vmm.emulate_first_insn(cpu_id, &insn).is_err()); - - Ok(()) } } diff --git a/hypervisor/src/mshv/mod.rs b/hypervisor/src/mshv/mod.rs index 223a4a86e..40394d7dd 100644 --- a/hypervisor/src/mshv/mod.rs +++ b/hypervisor/src/mshv/mod.rs @@ -144,9 +144,8 @@ impl SoftTLB { } // Adds a gva -> gpa mapping into the TLB. - fn add_mapping(&mut self, gva: u64, gpa: u64) -> Result<(), PlatformError> { + fn add_mapping(&mut self, gva: u64, gpa: u64) { *self.addr_map.entry(gva).or_insert(gpa) = gpa; - Ok(()) } // Do the actual gva -> gpa translation @@ -383,8 +382,7 @@ impl cpu::Vcpu for MshvVcpu { // Add the GVA <-> GPA mapping. context .tlb - .add_mapping(info.guest_virtual_address, info.guest_physical_address) - .map_err(|e| cpu::HypervisorCpuError::RunVcpu(e.into()))?; + .add_mapping(info.guest_virtual_address, info.guest_physical_address); // Create a new emulator. let mut emul = Emulator::new(&mut context); diff --git a/tests/integration.rs b/tests/integration.rs index 89ddde1a7..cef8cc8ab 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -577,7 +577,7 @@ mod tests { // Creates the path for direct kernel boot and return the path. // For x86_64, this function returns the vmlinux kernel path. // For AArch64, this function returns the PE kernel path. - fn direct_kernel_boot_path() -> Option { + fn direct_kernel_boot_path() -> PathBuf { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); @@ -587,7 +587,7 @@ mod tests { #[cfg(target_arch = "aarch64")] kernel_path.push("Image"); - Some(kernel_path) + kernel_path } fn prepare_vhost_user_net_daemon( @@ -923,7 +923,7 @@ mod tests { format! {"{{\"cpus\":{{\"boot_vcpus\":{},\"max_vcpus\":{}}},\"kernel\":{{\"path\":\"{}\"}},\"cmdline\":{{\"args\": \"{}\"}},\"net\":[{{\"ip\":\"{}\", \"mask\":\"255.255.255.0\", \"mac\":\"{}\"}}], \"disks\":[{{\"path\":\"{}\"}}, {{\"path\":\"{}\"}}]}}", cpu_count, cpu_count, - direct_kernel_boot_path().unwrap().to_str().unwrap(), + direct_kernel_boot_path().to_str().unwrap(), DIRECT_KERNEL_BOOT_CMDLINE, self.network.host_ip, self.network.guest_mac, @@ -1374,10 +1374,7 @@ mod tests { ), ]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .default_net() @@ -1444,7 +1441,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let host_mac = if generate_host_mac { Some(MacAddr::local_random()) @@ -1596,7 +1593,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let (blk_params, daemon_child) = { let prepare_daemon = prepare_vhost_user_blk_daemon.unwrap(); @@ -1749,7 +1746,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let disk_path = guest.disk_config.disk(DiskType::OperatingSystem).unwrap(); @@ -1828,7 +1825,7 @@ mod tests { let mut shared_dir = workload_path; shared_dir.push("shared_dir"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let (dax_vmm_param, dax_mount_param) = if dax { ("on", "-o dax") } else { ("off", "") }; let cache_size_vmm_param = if let Some(cache) = cache_size { @@ -2009,7 +2006,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut pmem_temp_file = NamedTempFile::new().unwrap(); pmem_temp_file.as_file_mut().set_len(128 << 20).unwrap(); @@ -2095,7 +2092,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let socket = temp_vsock_path(&guest.tmp_dir); let api_socket = temp_api_path(&guest.tmp_dir); @@ -2447,10 +2444,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=2,max=4"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .capture_output() .default_disks() @@ -2518,10 +2512,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", &format!("max_phys_bits={}", max_phys_bits)]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .default_net() @@ -2555,10 +2546,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=48"]) .args(&["--memory", "size=5120M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .args(&["--serial", "tty"]) .args(&["--console", "off"]) @@ -2587,10 +2575,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=128G"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .capture_output() .default_disks() @@ -2620,10 +2605,7 @@ mod tests { cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .capture_output() .default_disks() @@ -2814,10 +2796,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .capture_output() .default_disks() @@ -2858,7 +2837,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -2912,7 +2891,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -3043,7 +3022,7 @@ mod tests { let mut blk_file_path = workload_path; blk_file_path.push("blk.img"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut cloud_child = GuestCommand::new(&guest) .args(&["--cpus", "boot=4"]) @@ -3236,10 +3215,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .default_net() @@ -3361,7 +3337,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -3419,7 +3395,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -3516,10 +3492,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&[ "--cmdline", DIRECT_KERNEL_BOOT_CMDLINE @@ -3570,7 +3543,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -3629,10 +3602,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&[ "--cmdline", DIRECT_KERNEL_BOOT_CMDLINE @@ -3697,10 +3667,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", &cmdline]) .default_disks() .default_net() @@ -3782,7 +3749,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -3832,10 +3799,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .default_net() @@ -4122,7 +4086,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) @@ -4168,10 +4132,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .default_net() @@ -4525,10 +4486,7 @@ mod tests { let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .args(&[ @@ -4621,7 +4579,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=2,max=4"]) @@ -4722,7 +4680,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=2,max=4"]) @@ -4839,7 +4797,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=2,max=4"]) @@ -4927,7 +4885,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut child = GuestCommand::new(&guest) .args(&["--cpus", "boot=2,max=4"]) @@ -4986,7 +4944,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let guest_memory_size_kb = 512 * 1024; @@ -5029,7 +4987,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let api_socket = temp_api_path(&guest.tmp_dir); @@ -5208,7 +5166,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let api_socket = temp_api_path(&guest.tmp_dir); @@ -5340,7 +5298,7 @@ mod tests { let mut workload_path = dirs::home_dir().unwrap(); workload_path.push("workloads"); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let api_socket = temp_api_path(&guest.tmp_dir); @@ -5448,7 +5406,7 @@ mod tests { workload_path.push("workloads"); let mut kernels = vec![]; - kernels.push(direct_kernel_boot_path().unwrap()); + kernels.push(direct_kernel_boot_path()); #[cfg(target_arch = "x86_64")] { @@ -5669,10 +5627,7 @@ mod tests { let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) .args(&["--memory", "size=512M"]) - .args(&[ - "--kernel", - direct_kernel_boot_path().unwrap().to_str().unwrap(), - ]) + .args(&["--kernel", direct_kernel_boot_path().to_str().unwrap()]) .args(&["--cmdline", DIRECT_KERNEL_BOOT_CMDLINE]) .default_disks() .args(&["--net", guest.default_net_string().as_str()]) @@ -5707,7 +5662,7 @@ mod tests { let guest = Guest::new(&mut focal); let api_socket = temp_api_path(&guest.tmp_dir); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let mut cmd = GuestCommand::new(&guest); cmd.args(&["--cpus", "boot=1"]) @@ -5820,7 +5775,7 @@ mod tests { fn test_tap_from_fd() { let mut focal = UbuntuDiskConfig::new(FOCAL_IMAGE_NAME.to_string()); let guest = Guest::new(&mut focal); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); // Create a TAP interface with multi-queue enabled let num_queue_pairs: usize = 2; @@ -5889,7 +5844,7 @@ mod tests { fn test_macvtap() { let mut focal = UbuntuDiskConfig::new(FOCAL_IMAGE_NAME.to_string()); let guest = Guest::new(&mut focal); - let kernel_path = direct_kernel_boot_path().unwrap(); + let kernel_path = direct_kernel_boot_path(); let phy_net = "eth0"; // Create a macvtap interface for the guest VM to use diff --git a/virtio-devices/src/block.rs b/virtio-devices/src/block.rs index 56f02b1a6..bd31556d2 100644 --- a/virtio-devices/src/block.rs +++ b/virtio-devices/src/block.rs @@ -406,14 +406,12 @@ impl Block { } } - fn set_state(&mut self, state: &BlockState) -> io::Result<()> { + fn set_state(&mut self, state: &BlockState) { self.disk_path = state.disk_path.clone(); self.disk_nsectors = state.disk_nsectors; self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; self.config = state.config; - - Ok(()) } fn update_writeback(&mut self) { @@ -641,9 +639,8 @@ impl Snapshottable for Block { } }; - return self.set_state(&block_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore BLOCK state {:?}", e)) - }); + self.set_state(&block_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/console.rs b/virtio-devices/src/console.rs index 26b036cad..5cb2dc516 100644 --- a/virtio-devices/src/console.rs +++ b/virtio-devices/src/console.rs @@ -370,13 +370,11 @@ impl Console { } } - fn set_state(&mut self, state: &ConsoleState) -> io::Result<()> { + fn set_state(&mut self, state: &ConsoleState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; *(self.config.lock().unwrap()) = state.config; *(self.input.in_buffer.lock().unwrap()) = state.in_buffer.clone(); - - Ok(()) } } @@ -535,9 +533,8 @@ impl Snapshottable for Console { } }; - return self.set_state(&console_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore CONSOLE state {:?}", e)) - }); + self.set_state(&console_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/iommu.rs b/virtio-devices/src/iommu.rs index 0e4a818c1..c7aee1c2c 100644 --- a/virtio-devices/src/iommu.rs +++ b/virtio-devices/src/iommu.rs @@ -796,13 +796,11 @@ impl Iommu { } } - fn set_state(&mut self, state: &IommuState) -> io::Result<()> { + fn set_state(&mut self, state: &IommuState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; *(self.mapping.endpoints.write().unwrap()) = state.endpoints.clone(); *(self.mapping.mappings.write().unwrap()) = state.mappings.clone(); - - Ok(()) } // This function lets the caller specify a list of devices attached to the @@ -998,9 +996,8 @@ impl Snapshottable for Iommu { } }; - return self.set_state(&iommu_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore IOMMU state {:?}", e)) - }); + self.set_state(&iommu_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/net.rs b/virtio-devices/src/net.rs index 56869af85..759d308ed 100644 --- a/virtio-devices/src/net.rs +++ b/virtio-devices/src/net.rs @@ -333,13 +333,11 @@ impl Net { } } - fn set_state(&mut self, state: &NetState) -> Result<()> { + fn set_state(&mut self, state: &NetState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; self.config = state.config; self.common.queue_sizes = state.queue_size.clone(); - - Ok(()) } } @@ -604,9 +602,8 @@ impl Snapshottable for Net { } }; - return self.set_state(&net_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore NET state {:?}", e)) - }); + self.set_state(&net_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/pmem.rs b/virtio-devices/src/pmem.rs index ed7276f5a..7515920fd 100644 --- a/virtio-devices/src/pmem.rs +++ b/virtio-devices/src/pmem.rs @@ -324,12 +324,10 @@ impl Pmem { } } - fn set_state(&mut self, state: &PmemState) -> io::Result<()> { + fn set_state(&mut self, state: &PmemState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; self.config = state.config; - - Ok(()) } } @@ -484,9 +482,8 @@ impl Snapshottable for Pmem { } }; - return self.set_state(&pmem_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore PMEM state {:?}", e)) - }); + self.set_state(&pmem_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/rng.rs b/virtio-devices/src/rng.rs index 6dfa4edf4..09fa095fe 100644 --- a/virtio-devices/src/rng.rs +++ b/virtio-devices/src/rng.rs @@ -174,10 +174,9 @@ impl Rng { } } - fn set_state(&mut self, state: &RngState) -> io::Result<()> { + fn set_state(&mut self, state: &RngState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; - Ok(()) } } @@ -325,9 +324,8 @@ impl Snapshottable for Rng { } }; - return self.set_state(&rng_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore RNG state {:?}", e)) - }); + self.set_state(&rng_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/seccomp_filters.rs b/virtio-devices/src/seccomp_filters.rs index 41dc73136..e114989ba 100644 --- a/virtio-devices/src/seccomp_filters.rs +++ b/virtio-devices/src/seccomp_filters.rs @@ -55,8 +55,8 @@ const SYS_IO_URING_ENTER: i64 = 426; // See include/uapi/asm-generic/ioctls.h in the kernel code. const FIONBIO: u64 = 0x5421; -fn virtio_balloon_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_balloon_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -73,11 +73,11 @@ fn virtio_balloon_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_block_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_block_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -114,11 +114,11 @@ fn virtio_block_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_set_robust_list), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_console_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_console_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -140,11 +140,11 @@ fn virtio_console_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_set_robust_list), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_iommu_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_iommu_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -162,11 +162,11 @@ fn virtio_iommu_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_read), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_mem_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_mem_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -184,11 +184,11 @@ fn virtio_mem_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_net_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_net_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -206,11 +206,11 @@ fn virtio_net_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_net_ctl_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_net_ctl_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -227,11 +227,11 @@ fn virtio_net_ctl_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_pmem_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_pmem_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -249,11 +249,11 @@ fn virtio_pmem_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_rng_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_rng_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -275,11 +275,11 @@ fn virtio_rng_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_set_robust_list), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_vhost_blk_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_vhost_blk_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -296,11 +296,11 @@ fn virtio_vhost_blk_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_vhost_fs_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_vhost_fs_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -320,11 +320,11 @@ fn virtio_vhost_fs_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_sendmsg), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_vhost_net_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_vhost_net_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -342,11 +342,11 @@ fn virtio_vhost_net_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_madvise), #[cfg(target_arch = "aarch64")] allow_syscall(libc::SYS_exit), - ]) + ] } -fn virtio_vhost_net_ctl_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_vhost_net_ctl_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -365,15 +365,15 @@ fn virtio_vhost_net_ctl_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_madvise), #[cfg(target_arch = "aarch64")] allow_syscall(libc::SYS_exit), - ]) + ] } -fn create_vsock_ioctl_seccomp_rule() -> Result, Error> { - Ok(or![and![Cond::new(1, ArgLen::DWORD, Eq, FIONBIO,)?],]) +fn create_vsock_ioctl_seccomp_rule() -> Vec { + or![and![Cond::new(1, ArgLen::DWORD, Eq, FIONBIO,).unwrap()],] } -fn virtio_vsock_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_vsock_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_accept4), allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), @@ -384,7 +384,7 @@ fn virtio_vsock_thread_rules() -> Result, Error> { #[cfg(target_arch = "x86_64")] allow_syscall(libc::SYS_epoll_wait), allow_syscall(libc::SYS_exit), - allow_syscall_if(libc::SYS_ioctl, create_vsock_ioctl_seccomp_rule()?), + allow_syscall_if(libc::SYS_ioctl, create_vsock_ioctl_seccomp_rule()), allow_syscall(libc::SYS_futex), allow_syscall(libc::SYS_madvise), allow_syscall(libc::SYS_munmap), @@ -393,11 +393,11 @@ fn virtio_vsock_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_rt_sigprocmask), allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_write), - ]) + ] } -fn virtio_watchdog_thread_rules() -> Result, Error> { - Ok(vec![ +fn virtio_watchdog_thread_rules() -> Vec { + vec![ allow_syscall(libc::SYS_brk), allow_syscall(libc::SYS_close), allow_syscall(libc::SYS_dup), @@ -420,51 +420,48 @@ fn virtio_watchdog_thread_rules() -> Result, Error> { allow_syscall(libc::SYS_sigaltstack), allow_syscall(libc::SYS_timerfd_settime), allow_syscall(libc::SYS_write), - ]) + ] } fn get_seccomp_filter_trap(thread_type: Thread) -> Result { let rules = match thread_type { - Thread::VirtioBalloon => virtio_balloon_thread_rules()?, - Thread::VirtioBlock => virtio_block_thread_rules()?, - Thread::VirtioConsole => virtio_console_thread_rules()?, - Thread::VirtioIommu => virtio_iommu_thread_rules()?, - Thread::VirtioMem => virtio_mem_thread_rules()?, - Thread::VirtioNet => virtio_net_thread_rules()?, - Thread::VirtioNetCtl => virtio_net_ctl_thread_rules()?, - Thread::VirtioPmem => virtio_pmem_thread_rules()?, - Thread::VirtioRng => virtio_rng_thread_rules()?, - Thread::VirtioVhostBlk => virtio_vhost_blk_thread_rules()?, - Thread::VirtioVhostFs => virtio_vhost_fs_thread_rules()?, - Thread::VirtioVhostNet => virtio_vhost_net_thread_rules()?, - Thread::VirtioVhostNetCtl => virtio_vhost_net_ctl_thread_rules()?, - Thread::VirtioVsock => virtio_vsock_thread_rules()?, - Thread::VirtioWatchdog => virtio_watchdog_thread_rules()?, + Thread::VirtioBalloon => virtio_balloon_thread_rules(), + Thread::VirtioBlock => virtio_block_thread_rules(), + Thread::VirtioConsole => virtio_console_thread_rules(), + Thread::VirtioIommu => virtio_iommu_thread_rules(), + Thread::VirtioMem => virtio_mem_thread_rules(), + Thread::VirtioNet => virtio_net_thread_rules(), + Thread::VirtioNetCtl => virtio_net_ctl_thread_rules(), + Thread::VirtioPmem => virtio_pmem_thread_rules(), + Thread::VirtioRng => virtio_rng_thread_rules(), + Thread::VirtioVhostBlk => virtio_vhost_blk_thread_rules(), + Thread::VirtioVhostFs => virtio_vhost_fs_thread_rules(), + Thread::VirtioVhostNet => virtio_vhost_net_thread_rules(), + Thread::VirtioVhostNetCtl => virtio_vhost_net_ctl_thread_rules(), + Thread::VirtioVsock => virtio_vsock_thread_rules(), + Thread::VirtioWatchdog => virtio_watchdog_thread_rules(), }; - Ok(SeccompFilter::new( - rules.into_iter().collect(), - SeccompAction::Trap, - )?) + SeccompFilter::new(rules.into_iter().collect(), SeccompAction::Trap) } fn get_seccomp_filter_log(thread_type: Thread) -> Result { let rules = match thread_type { - Thread::VirtioBalloon => virtio_balloon_thread_rules()?, - Thread::VirtioBlock => virtio_block_thread_rules()?, - Thread::VirtioConsole => virtio_console_thread_rules()?, - Thread::VirtioIommu => virtio_iommu_thread_rules()?, - Thread::VirtioMem => virtio_mem_thread_rules()?, - Thread::VirtioNet => virtio_net_thread_rules()?, - Thread::VirtioNetCtl => virtio_net_ctl_thread_rules()?, - Thread::VirtioPmem => virtio_pmem_thread_rules()?, - Thread::VirtioRng => virtio_rng_thread_rules()?, - Thread::VirtioVhostBlk => virtio_vhost_blk_thread_rules()?, - Thread::VirtioVhostFs => virtio_vhost_fs_thread_rules()?, - Thread::VirtioVhostNet => virtio_vhost_net_thread_rules()?, - Thread::VirtioVhostNetCtl => virtio_vhost_net_ctl_thread_rules()?, - Thread::VirtioVsock => virtio_vsock_thread_rules()?, - Thread::VirtioWatchdog => virtio_watchdog_thread_rules()?, + Thread::VirtioBalloon => virtio_balloon_thread_rules(), + Thread::VirtioBlock => virtio_block_thread_rules(), + Thread::VirtioConsole => virtio_console_thread_rules(), + Thread::VirtioIommu => virtio_iommu_thread_rules(), + Thread::VirtioMem => virtio_mem_thread_rules(), + Thread::VirtioNet => virtio_net_thread_rules(), + Thread::VirtioNetCtl => virtio_net_ctl_thread_rules(), + Thread::VirtioPmem => virtio_pmem_thread_rules(), + Thread::VirtioRng => virtio_rng_thread_rules(), + Thread::VirtioVhostBlk => virtio_vhost_blk_thread_rules(), + Thread::VirtioVhostFs => virtio_vhost_fs_thread_rules(), + Thread::VirtioVhostNet => virtio_vhost_net_thread_rules(), + Thread::VirtioVhostNetCtl => virtio_vhost_net_ctl_thread_rules(), + Thread::VirtioVsock => virtio_vsock_thread_rules(), + Thread::VirtioWatchdog => virtio_watchdog_thread_rules(), }; Ok(SeccompFilter::new( diff --git a/virtio-devices/src/vsock/device.rs b/virtio-devices/src/vsock/device.rs index abbce3abe..fb5fe07aa 100644 --- a/virtio-devices/src/vsock/device.rs +++ b/virtio-devices/src/vsock/device.rs @@ -355,11 +355,9 @@ where } } - fn set_state(&mut self, state: &VsockState) -> io::Result<()> { + fn set_state(&mut self, state: &VsockState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; - - Ok(()) } } @@ -531,9 +529,8 @@ where } }; - return self.set_state(&vsock_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore VSOCK state {:?}", e)) - }); + self.set_state(&vsock_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/virtio-devices/src/watchdog.rs b/virtio-devices/src/watchdog.rs index 6a761080e..b76fcb1b1 100644 --- a/virtio-devices/src/watchdog.rs +++ b/virtio-devices/src/watchdog.rs @@ -212,7 +212,7 @@ impl Watchdog { } } - fn set_state(&mut self, state: &WatchdogState) -> io::Result<()> { + fn set_state(&mut self, state: &WatchdogState) { self.common.avail_features = state.avail_features; self.common.acked_features = state.acked_features; // When restoring enable the watchdog if it was previously enabled. We reset the timer @@ -220,7 +220,6 @@ impl Watchdog { if state.enabled { self.last_ping_time.lock().unwrap().replace(Instant::now()); } - Ok(()) } } @@ -418,9 +417,8 @@ impl Snapshottable for Watchdog { } }; - return self.set_state(&watchdog_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore watchdog state {:?}", e)) - }); + self.set_state(&watchdog_state); + return Ok(()); } Err(MigratableError::Restore(anyhow!( diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 342194b1c..1006e2ac2 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -1726,7 +1726,7 @@ mod tests { use super::*; #[test] - fn test_option_parser() -> std::result::Result<(), OptionParserError> { + fn test_option_parser() { let mut parser = OptionParser::new(); parser .add("size") @@ -1742,7 +1742,6 @@ mod tests { assert_eq!(parser.get("size"), Some("128M".to_owned())); assert!(!parser.is_set("mergeable")); assert!(parser.is_set("size")); - Ok(()) } #[test] @@ -2271,7 +2270,7 @@ mod tests { } #[test] - fn test_config_validation() -> Result<()> { + fn test_config_validation() { let valid_config = VmConfig { cpus: CpusConfig { boot_vcpus: 1, @@ -2432,7 +2431,5 @@ mod tests { invalid_config.memory.hugepages = true; invalid_config.memory.hugepage_size = Some(3 << 20); assert!(invalid_config.validate().is_err()); - - Ok(()) } } diff --git a/vmm/src/cpu.rs b/vmm/src/cpu.rs index 124551ac6..b6c8cd6d3 100644 --- a/vmm/src/cpu.rs +++ b/vmm/src/cpu.rs @@ -992,12 +992,11 @@ impl CpuManager { Ok(()) } - fn mark_vcpus_for_removal(&mut self, desired_vcpus: u8) -> Result<()> { + fn mark_vcpus_for_removal(&mut self, desired_vcpus: u8) { // Mark vCPUs for removal, actual removal happens on ejection for cpu_id in desired_vcpus..self.present_vcpus() { self.vcpu_states[usize::from(cpu_id)].removing = true; } - Ok(()) } fn remove_vcpu(&mut self, cpu_id: u8) -> Result<()> { @@ -1049,7 +1048,10 @@ impl CpuManager { self.activate_vcpus(desired_vcpus, true)?; Ok(true) } - cmp::Ordering::Less => self.mark_vcpus_for_removal(desired_vcpus).and(Ok(true)), + cmp::Ordering::Less => { + self.mark_vcpus_for_removal(desired_vcpus); + Ok(true) + } _ => Ok(false), } } diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index 77a6162f8..c9d7de044 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -1097,11 +1097,9 @@ impl DeviceManager { } } - fn set_state(&mut self, state: &DeviceManagerState) -> DeviceManagerResult<()> { + fn set_state(&mut self, state: &DeviceManagerState) { self.device_tree = Arc::new(Mutex::new(state.device_tree.clone())); self.device_id_cnt = state.device_id_cnt; - - Ok(()) } #[cfg(target_arch = "aarch64")] @@ -3726,9 +3724,7 @@ impl Snapshottable for DeviceManager { MigratableError::Restore(anyhow!("Could not deserialize DeviceManager {}", e)) })?; - self.set_state(&device_manager_state).map_err(|e| { - MigratableError::Restore(anyhow!("Could not restore DeviceManager state {:?}", e)) - })?; + self.set_state(&device_manager_state); } else { return Err(MigratableError::Restore(anyhow!( "Could not find DeviceManager snapshot section" diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index abb663c38..3fcde9060 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -539,10 +539,10 @@ impl Vmm { } } - fn vmm_ping(&self) -> result::Result { - Ok(VmmPingResponse { + fn vmm_ping(&self) -> VmmPingResponse { + VmmPingResponse { version: self.version.clone(), - }) + } } fn vm_delete(&mut self) -> result::Result<(), VmError> { @@ -1205,9 +1205,9 @@ impl Vmm { sender.send(response).map_err(Error::ApiResponseSend)?; } ApiRequest::VmmPing(sender) => { - let response = self.vmm_ping().map(ApiResponsePayload::VmmPing); + let response = ApiResponsePayload::VmmPing(self.vmm_ping()); - sender.send(response).map_err(Error::ApiResponseSend)?; + sender.send(Ok(response)).map_err(Error::ApiResponseSend)?; } ApiRequest::VmPause(sender) => { let response = self