mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
KVM: selftests: Add wrappers for mmap() and munmap() to assert success
Add and use wrappers for mmap() and munmap() that assert success to reduce a significant amount of boilerplate code, to ensure all tests assert on failure, and to provide consistent error messages on failure. No functional change intended. Reviewed-by: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Ackerley Tng <ackerleytng@google.com> Link: https://lore.kernel.org/r/20251003232606.4070510-10-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
@@ -741,13 +741,11 @@ static void vm_vcpu_rm(struct kvm_vm *vm, struct kvm_vcpu *vcpu)
|
||||
int ret;
|
||||
|
||||
if (vcpu->dirty_gfns) {
|
||||
ret = munmap(vcpu->dirty_gfns, vm->dirty_ring_size);
|
||||
TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
|
||||
kvm_munmap(vcpu->dirty_gfns, vm->dirty_ring_size);
|
||||
vcpu->dirty_gfns = NULL;
|
||||
}
|
||||
|
||||
ret = munmap(vcpu->run, vcpu_mmap_sz());
|
||||
TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
|
||||
kvm_munmap(vcpu->run, vcpu_mmap_sz());
|
||||
|
||||
ret = close(vcpu->fd);
|
||||
TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("close()", ret));
|
||||
@@ -783,20 +781,16 @@ void kvm_vm_release(struct kvm_vm *vmp)
|
||||
static void __vm_mem_region_delete(struct kvm_vm *vm,
|
||||
struct userspace_mem_region *region)
|
||||
{
|
||||
int ret;
|
||||
|
||||
rb_erase(®ion->gpa_node, &vm->regions.gpa_tree);
|
||||
rb_erase(®ion->hva_node, &vm->regions.hva_tree);
|
||||
hash_del(®ion->slot_node);
|
||||
|
||||
sparsebit_free(®ion->unused_phy_pages);
|
||||
sparsebit_free(®ion->protected_phy_pages);
|
||||
ret = munmap(region->mmap_start, region->mmap_size);
|
||||
TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
|
||||
kvm_munmap(region->mmap_start, region->mmap_size);
|
||||
if (region->fd >= 0) {
|
||||
/* There's an extra map when using shared memory. */
|
||||
ret = munmap(region->mmap_alias, region->mmap_size);
|
||||
TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
|
||||
kvm_munmap(region->mmap_alias, region->mmap_size);
|
||||
close(region->fd);
|
||||
}
|
||||
if (region->region.guest_memfd >= 0)
|
||||
@@ -1053,12 +1047,9 @@ void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing_src_type src_type,
|
||||
region->fd = kvm_memfd_alloc(region->mmap_size,
|
||||
src_type == VM_MEM_SRC_SHARED_HUGETLB);
|
||||
|
||||
region->mmap_start = mmap(NULL, region->mmap_size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
vm_mem_backing_src_alias(src_type)->flag,
|
||||
region->fd, 0);
|
||||
TEST_ASSERT(region->mmap_start != MAP_FAILED,
|
||||
__KVM_SYSCALL_ERROR("mmap()", (int)(unsigned long)MAP_FAILED));
|
||||
region->mmap_start = kvm_mmap(region->mmap_size, PROT_READ | PROT_WRITE,
|
||||
vm_mem_backing_src_alias(src_type)->flag,
|
||||
region->fd);
|
||||
|
||||
TEST_ASSERT(!is_backing_src_hugetlb(src_type) ||
|
||||
region->mmap_start == align_ptr_up(region->mmap_start, backing_src_pagesz),
|
||||
@@ -1129,12 +1120,10 @@ void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing_src_type src_type,
|
||||
|
||||
/* If shared memory, create an alias. */
|
||||
if (region->fd >= 0) {
|
||||
region->mmap_alias = mmap(NULL, region->mmap_size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
vm_mem_backing_src_alias(src_type)->flag,
|
||||
region->fd, 0);
|
||||
TEST_ASSERT(region->mmap_alias != MAP_FAILED,
|
||||
__KVM_SYSCALL_ERROR("mmap()", (int)(unsigned long)MAP_FAILED));
|
||||
region->mmap_alias = kvm_mmap(region->mmap_size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
vm_mem_backing_src_alias(src_type)->flag,
|
||||
region->fd);
|
||||
|
||||
/* Align host alias address */
|
||||
region->host_alias = align_ptr_up(region->mmap_alias, alignment);
|
||||
@@ -1344,10 +1333,8 @@ struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id)
|
||||
TEST_ASSERT(vcpu_mmap_sz() >= sizeof(*vcpu->run), "vcpu mmap size "
|
||||
"smaller than expected, vcpu_mmap_sz: %zi expected_min: %zi",
|
||||
vcpu_mmap_sz(), sizeof(*vcpu->run));
|
||||
vcpu->run = (struct kvm_run *) mmap(NULL, vcpu_mmap_sz(),
|
||||
PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd, 0);
|
||||
TEST_ASSERT(vcpu->run != MAP_FAILED,
|
||||
__KVM_SYSCALL_ERROR("mmap()", (int)(unsigned long)MAP_FAILED));
|
||||
vcpu->run = kvm_mmap(vcpu_mmap_sz(), PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, vcpu->fd);
|
||||
|
||||
if (kvm_has_cap(KVM_CAP_BINARY_STATS_FD))
|
||||
vcpu->stats.fd = vcpu_get_stats_fd(vcpu);
|
||||
@@ -1794,9 +1781,8 @@ void *vcpu_map_dirty_ring(struct kvm_vcpu *vcpu)
|
||||
page_size * KVM_DIRTY_LOG_PAGE_OFFSET);
|
||||
TEST_ASSERT(addr == MAP_FAILED, "Dirty ring mapped exec");
|
||||
|
||||
addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd,
|
||||
page_size * KVM_DIRTY_LOG_PAGE_OFFSET);
|
||||
TEST_ASSERT(addr != MAP_FAILED, "Dirty ring map failed");
|
||||
addr = __kvm_mmap(size, PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd,
|
||||
page_size * KVM_DIRTY_LOG_PAGE_OFFSET);
|
||||
|
||||
vcpu->dirty_gfns = addr;
|
||||
vcpu->dirty_gfns_count = size / sizeof(struct kvm_dirty_gfn);
|
||||
|
||||
Reference in New Issue
Block a user