diff options
Diffstat (limited to 'tools/testing/selftests/kvm/lib')
| -rw-r--r-- | tools/testing/selftests/kvm/lib/kvm_util.c | 44 | ||||
| -rw-r--r-- | tools/testing/selftests/kvm/lib/test_util.c | 7 | 
2 files changed, 22 insertions, 29 deletions
| diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index a35adfebfa23..1a93d6361671 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -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); diff --git a/tools/testing/selftests/kvm/lib/test_util.c b/tools/testing/selftests/kvm/lib/test_util.c index 03eb99af9b8d..8a1848586a85 100644 --- a/tools/testing/selftests/kvm/lib/test_util.c +++ b/tools/testing/selftests/kvm/lib/test_util.c @@ -18,6 +18,13 @@  #include "test_util.h" +sigjmp_buf expect_sigbus_jmpbuf; + +void __attribute__((used)) expect_sigbus_handler(int signum) +{ +	siglongjmp(expect_sigbus_jmpbuf, 1); +} +  /*   * Random number generator that is usable from guest code. This is the   * Park-Miller LCG using standard constants. | 
