Skip to content

Commit 0bb5f87

Browse files
jinankjainShadowCurse
authored andcommitted
kvm-ioctls: Remove tests related to invalid FD
The kvm-ioctl interface does not perform any special handling for invalid file descriptors; such cases are transparently managed by the kernel. Therefore, adding a negative test for this behavior does not provide value when validating a kernel feature. Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
1 parent c75a562 commit 0bb5f87

File tree

2 files changed

+1
-323
lines changed

2 files changed

+1
-323
lines changed

coverage_config_x86_64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"coverage_score": 91.46,
2+
"coverage_score": 89.00,
33
"exclude_path": ".*bindings\\.rs",
44
"crate_features": "fam-wrappers,serde"
55
}

kvm-ioctls/src/ioctls/vcpu.rs

Lines changed: 0 additions & 322 deletions
Original file line numberDiff line numberDiff line change
@@ -2740,328 +2740,6 @@ mod tests {
27402740
}
27412741
}
27422742

2743-
#[test]
2744-
#[cfg(any(
2745-
target_arch = "x86_64",
2746-
target_arch = "aarch64",
2747-
target_arch = "riscv64"
2748-
))]
2749-
fn test_faulty_vcpu_fd() {
2750-
use std::os::unix::io::{FromRawFd, IntoRawFd};
2751-
2752-
let badf_errno = libc::EBADF;
2753-
2754-
let mut faulty_vcpu_fd = VcpuFd {
2755-
vcpu: unsafe { File::from_raw_fd(-2) },
2756-
kvm_run_ptr: KvmRunWrapper {
2757-
kvm_run_ptr: mmap_anonymous(10).cast(),
2758-
mmap_size: 10,
2759-
},
2760-
coalesced_mmio_ring: None,
2761-
};
2762-
2763-
assert_eq!(
2764-
faulty_vcpu_fd.get_mp_state().unwrap_err().errno(),
2765-
badf_errno
2766-
);
2767-
assert_eq!(
2768-
faulty_vcpu_fd
2769-
.set_mp_state(kvm_mp_state::default())
2770-
.unwrap_err()
2771-
.errno(),
2772-
badf_errno
2773-
);
2774-
#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
2775-
assert_eq!(
2776-
faulty_vcpu_fd.get_vcpu_events().unwrap_err().errno(),
2777-
badf_errno
2778-
);
2779-
#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
2780-
assert_eq!(
2781-
faulty_vcpu_fd
2782-
.set_vcpu_events(&kvm_vcpu_events::default())
2783-
.unwrap_err()
2784-
.errno(),
2785-
badf_errno
2786-
);
2787-
assert_eq!(faulty_vcpu_fd.run().unwrap_err().errno(), badf_errno);
2788-
2789-
// Don't drop the File object, or it'll notice the file it's trying to close is
2790-
// invalid and abort the process.
2791-
let _ = faulty_vcpu_fd.vcpu.into_raw_fd();
2792-
}
2793-
2794-
#[test]
2795-
#[cfg(target_arch = "x86_64")]
2796-
fn test_faulty_vcpu_fd_x86_64() {
2797-
use std::os::unix::io::{FromRawFd, IntoRawFd};
2798-
2799-
let badf_errno = libc::EBADF;
2800-
2801-
let faulty_vcpu_fd = VcpuFd {
2802-
vcpu: unsafe { File::from_raw_fd(-2) },
2803-
kvm_run_ptr: KvmRunWrapper {
2804-
kvm_run_ptr: mmap_anonymous(10).cast(),
2805-
mmap_size: 10,
2806-
},
2807-
coalesced_mmio_ring: None,
2808-
};
2809-
2810-
assert_eq!(faulty_vcpu_fd.get_regs().unwrap_err().errno(), badf_errno);
2811-
assert_eq!(
2812-
faulty_vcpu_fd
2813-
.set_regs(&unsafe { std::mem::zeroed() })
2814-
.unwrap_err()
2815-
.errno(),
2816-
badf_errno
2817-
);
2818-
assert_eq!(faulty_vcpu_fd.get_sregs().unwrap_err().errno(), badf_errno);
2819-
assert_eq!(
2820-
faulty_vcpu_fd
2821-
.set_sregs(&unsafe { std::mem::zeroed() })
2822-
.unwrap_err()
2823-
.errno(),
2824-
badf_errno
2825-
);
2826-
assert_eq!(faulty_vcpu_fd.get_fpu().unwrap_err().errno(), badf_errno);
2827-
assert_eq!(
2828-
faulty_vcpu_fd
2829-
.set_fpu(&unsafe { std::mem::zeroed() })
2830-
.unwrap_err()
2831-
.errno(),
2832-
badf_errno
2833-
);
2834-
assert_eq!(
2835-
faulty_vcpu_fd
2836-
.set_cpuid2(
2837-
&Kvm::new()
2838-
.unwrap()
2839-
.get_supported_cpuid(KVM_MAX_CPUID_ENTRIES)
2840-
.unwrap()
2841-
)
2842-
.unwrap_err()
2843-
.errno(),
2844-
badf_errno
2845-
);
2846-
assert_eq!(
2847-
faulty_vcpu_fd.get_cpuid2(1).err().unwrap().errno(),
2848-
badf_errno
2849-
);
2850-
// `kvm_lapic_state` does not implement debug by default so we cannot
2851-
// use unwrap_err here.
2852-
faulty_vcpu_fd.get_lapic().unwrap_err();
2853-
assert_eq!(
2854-
faulty_vcpu_fd
2855-
.set_lapic(&unsafe { std::mem::zeroed() })
2856-
.unwrap_err()
2857-
.errno(),
2858-
badf_errno
2859-
);
2860-
assert_eq!(
2861-
faulty_vcpu_fd
2862-
.get_msrs(&mut Msrs::new(1).unwrap())
2863-
.unwrap_err()
2864-
.errno(),
2865-
badf_errno
2866-
);
2867-
assert_eq!(
2868-
faulty_vcpu_fd
2869-
.set_msrs(&Msrs::new(1).unwrap())
2870-
.unwrap_err()
2871-
.errno(),
2872-
badf_errno
2873-
);
2874-
assert_eq!(
2875-
faulty_vcpu_fd.get_xsave().err().unwrap().errno(),
2876-
badf_errno
2877-
);
2878-
assert_eq!(
2879-
// SAFETY: It fails before it copies data and any features are not enabled dynamically.
2880-
unsafe {
2881-
faulty_vcpu_fd
2882-
.set_xsave(&kvm_xsave::default())
2883-
.unwrap_err()
2884-
.errno()
2885-
},
2886-
badf_errno
2887-
);
2888-
assert_eq!(faulty_vcpu_fd.get_xcrs().unwrap_err().errno(), badf_errno);
2889-
assert_eq!(
2890-
faulty_vcpu_fd
2891-
.set_xcrs(&kvm_xcrs::default())
2892-
.err()
2893-
.unwrap()
2894-
.errno(),
2895-
badf_errno
2896-
);
2897-
assert_eq!(
2898-
faulty_vcpu_fd.get_debug_regs().unwrap_err().errno(),
2899-
badf_errno
2900-
);
2901-
assert_eq!(
2902-
faulty_vcpu_fd
2903-
.set_debug_regs(&kvm_debugregs::default())
2904-
.unwrap_err()
2905-
.errno(),
2906-
badf_errno
2907-
);
2908-
assert_eq!(
2909-
faulty_vcpu_fd.kvmclock_ctrl().unwrap_err().errno(),
2910-
badf_errno
2911-
);
2912-
faulty_vcpu_fd.get_tsc_khz().unwrap_err();
2913-
faulty_vcpu_fd.set_tsc_khz(1000000).unwrap_err();
2914-
faulty_vcpu_fd.translate_gva(u64::MAX).unwrap_err();
2915-
2916-
// Don't drop the File object, or it'll notice the file it's trying to close is
2917-
// invalid and abort the process.
2918-
let _ = faulty_vcpu_fd.vcpu.into_raw_fd();
2919-
}
2920-
2921-
#[test]
2922-
#[cfg(target_arch = "aarch64")]
2923-
fn test_faulty_vcpu_target_aarch64() {
2924-
let kvm = Kvm::new().unwrap();
2925-
let vm = kvm.create_vm().unwrap();
2926-
let vcpu = vm.create_vcpu(0).unwrap();
2927-
2928-
// KVM defines valid targets as 0 to KVM_ARM_NUM_TARGETS-1, so pick a big raw number
2929-
// greater than that as target to be invalid
2930-
let kvi = kvm_vcpu_init {
2931-
target: 300,
2932-
..Default::default()
2933-
};
2934-
2935-
vcpu.vcpu_init(&kvi).unwrap_err();
2936-
}
2937-
2938-
#[test]
2939-
#[cfg(target_arch = "aarch64")]
2940-
fn test_faulty_vcpu_fd_aarch64() {
2941-
use std::os::unix::io::{FromRawFd, IntoRawFd};
2942-
2943-
let badf_errno = libc::EBADF;
2944-
2945-
let faulty_vcpu_fd = VcpuFd {
2946-
vcpu: unsafe { File::from_raw_fd(-2) },
2947-
kvm_run_ptr: KvmRunWrapper {
2948-
kvm_run_ptr: mmap_anonymous(10).cast(),
2949-
mmap_size: 10,
2950-
},
2951-
coalesced_mmio_ring: None,
2952-
};
2953-
2954-
let device_attr = kvm_device_attr {
2955-
group: KVM_ARM_VCPU_PMU_V3_CTRL,
2956-
attr: u64::from(KVM_ARM_VCPU_PMU_V3_INIT),
2957-
addr: 0x0,
2958-
flags: 0,
2959-
};
2960-
2961-
let reg_id = 0x6030_0000_0010_0042;
2962-
let mut reg_data = 0u128.to_le_bytes();
2963-
2964-
assert_eq!(
2965-
faulty_vcpu_fd
2966-
.set_device_attr(&device_attr)
2967-
.unwrap_err()
2968-
.errno(),
2969-
badf_errno
2970-
);
2971-
assert_eq!(
2972-
faulty_vcpu_fd
2973-
.has_device_attr(&device_attr)
2974-
.unwrap_err()
2975-
.errno(),
2976-
badf_errno
2977-
);
2978-
assert_eq!(
2979-
faulty_vcpu_fd
2980-
.vcpu_init(&kvm_vcpu_init::default())
2981-
.unwrap_err()
2982-
.errno(),
2983-
badf_errno
2984-
);
2985-
assert_eq!(
2986-
faulty_vcpu_fd
2987-
.vcpu_finalize(&(KVM_ARM_VCPU_SVE as i32))
2988-
.unwrap_err()
2989-
.errno(),
2990-
badf_errno
2991-
);
2992-
assert_eq!(
2993-
faulty_vcpu_fd
2994-
.get_reg_list(&mut RegList::new(500).unwrap())
2995-
.unwrap_err()
2996-
.errno(),
2997-
badf_errno
2998-
);
2999-
assert_eq!(
3000-
faulty_vcpu_fd
3001-
.set_one_reg(reg_id, &reg_data)
3002-
.unwrap_err()
3003-
.errno(),
3004-
badf_errno
3005-
);
3006-
assert_eq!(
3007-
faulty_vcpu_fd
3008-
.get_one_reg(reg_id, &mut reg_data)
3009-
.unwrap_err()
3010-
.errno(),
3011-
badf_errno
3012-
);
3013-
3014-
// Don't drop the File object, or it'll notice the file it's trying to close is
3015-
// invalid and abort the process.
3016-
let _ = faulty_vcpu_fd.vcpu.into_raw_fd();
3017-
}
3018-
3019-
#[test]
3020-
#[cfg(target_arch = "riscv64")]
3021-
fn test_faulty_vcpu_fd_riscv64() {
3022-
use std::os::unix::io::{FromRawFd, IntoRawFd};
3023-
3024-
let badf_errno = libc::EBADF;
3025-
3026-
let faulty_vcpu_fd = VcpuFd {
3027-
vcpu: unsafe { File::from_raw_fd(-2) },
3028-
kvm_run_ptr: KvmRunWrapper {
3029-
kvm_run_ptr: mmap_anonymous(10).cast(),
3030-
mmap_size: 10,
3031-
},
3032-
coalesced_mmio_ring: None,
3033-
};
3034-
3035-
let reg_id = 0x8030_0000_0200_000a;
3036-
let mut reg_data = 0u128.to_le_bytes();
3037-
3038-
assert_eq!(
3039-
faulty_vcpu_fd
3040-
.get_reg_list(&mut RegList::new(200).unwrap())
3041-
.unwrap_err()
3042-
.errno(),
3043-
badf_errno
3044-
);
3045-
assert_eq!(
3046-
faulty_vcpu_fd
3047-
.set_one_reg(reg_id, &reg_data)
3048-
.unwrap_err()
3049-
.errno(),
3050-
badf_errno
3051-
);
3052-
assert_eq!(
3053-
faulty_vcpu_fd
3054-
.get_one_reg(reg_id, &mut reg_data)
3055-
.unwrap_err()
3056-
.errno(),
3057-
badf_errno
3058-
);
3059-
3060-
// Don't drop the File object, or it'll notice the file it's trying to close is
3061-
// invalid and abort the process.
3062-
let _ = faulty_vcpu_fd.vcpu.into_raw_fd();
3063-
}
3064-
30652743
#[test]
30662744
#[cfg(target_arch = "aarch64")]
30672745
fn test_get_preferred_target() {

0 commit comments

Comments
 (0)