KVM: selftests: Add missing close and munmap in __vm_mem_region_delete()
authorRicardo Koller <ricarkol@google.com>
Mon, 17 Oct 2022 19:58:23 +0000 (19:58 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 10 Nov 2022 19:10:27 +0000 (19:10 +0000)
Deleting a memslot (when freeing a VM) is not closing the backing fd,
nor it's unmapping the alias mapping. Fix by adding the missing close
and munmap.

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Reviewed-by: Oliver Upton <oupton@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Signed-off-by: Ricardo Koller <ricarkol@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221017195834.2295901-4-ricarkol@google.com
tools/testing/selftests/kvm/lib/kvm_util.c

index f1cb1627161fde1ba5c3501b353fb765459347df..19e37fb7de7ccc7506490e134726a3206ec03f26 100644 (file)
@@ -586,6 +586,12 @@ static void __vm_mem_region_delete(struct kvm_vm *vm,
        sparsebit_free(&region->unused_phy_pages);
        ret = munmap(region->mmap_start, region->mmap_size);
        TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
+       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));
+               close(region->fd);
+       }
 
        free(region);
 }