]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: selftests: Isolate the guest_memfd Copy-on-Write negative testcase
authorSean Christopherson <seanjc@google.com>
Fri, 3 Oct 2025 23:26:03 +0000 (16:26 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 10 Oct 2025 21:25:28 +0000 (14:25 -0700)
Move the guest_memfd Copy-on-Write (CoW) testcase to its own function to
better separate positive testcases from negative testcases.

No functional change intended.

Suggested-by: Ackerley Tng <ackerleytng@google.com>
Reviewed-by: Ackerley Tng <ackerleytng@google.com>
Tested-by: Ackerley Tng <ackerleytng@google.com>
Link: https://lore.kernel.org/r/20251003232606.4070510-11-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
tools/testing/selftests/kvm/guest_memfd_test.c

index 319fda4f5d539a41fb81fa4c0bfca71466bad0ba..640636c76eb93eaaad4701edc4aeeeac0057f67d 100644 (file)
@@ -40,6 +40,14 @@ static void test_file_read_write(int fd, size_t total_size)
                    "pwrite on a guest_mem fd should fail");
 }
 
+static void test_mmap_cow(int fd, size_t size)
+{
+       void *mem;
+
+       mem = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
+       TEST_ASSERT(mem == MAP_FAILED, "Copy-on-write not allowed by guest_memfd.");
+}
+
 static void test_mmap_supported(int fd, size_t total_size)
 {
        const char val = 0xaa;
@@ -47,9 +55,6 @@ static void test_mmap_supported(int fd, size_t total_size)
        size_t i;
        int ret;
 
-       mem = mmap(NULL, total_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
-       TEST_ASSERT(mem == MAP_FAILED, "Copy-on-write not allowed by guest_memfd.");
-
        mem = kvm_mmap(total_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd);
 
        memset(mem, val, total_size);
@@ -272,6 +277,7 @@ static void __test_guest_memfd(struct kvm_vm *vm, uint64_t flags)
 
        if (flags & GUEST_MEMFD_FLAG_MMAP) {
                gmem_test(mmap_supported, vm, flags);
+               gmem_test(mmap_cow, vm, flags);
                gmem_test(fault_overflow, vm, flags);
        } else {
                gmem_test(mmap_not_supported, vm, flags);