]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: selftests: Do not use hardcoded page sizes in guest_memfd test
authorFuad Tabba <tabba@google.com>
Tue, 29 Jul 2025 22:54:53 +0000 (15:54 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 27 Aug 2025 08:37:03 +0000 (04:37 -0400)
Update the guest_memfd_test selftest to use getpagesize() instead of
hardcoded 4KB page size values.

Using hardcoded page sizes can cause test failures on architectures or
systems configured with larger page sizes, such as arm64 with 64KB
pages. By dynamically querying the system's page size, the test becomes
more portable and robust across different environments.

Additionally, build the guest_memfd_test selftest for arm64.

Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Shivank Garg <shivankg@amd.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Suggested-by: Gavin Shan <gshan@redhat.com>
Signed-off-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20250729225455.670324-23-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/Makefile.kvm
tools/testing/selftests/kvm/guest_memfd_test.c

index f6fe7a07a0a2eacfc8ce220a047db24c4fd8c03d..90f03f00cb04dba702a8c5c918cfff6ad0eff402 100644 (file)
@@ -174,6 +174,7 @@ TEST_GEN_PROGS_arm64 += arch_timer
 TEST_GEN_PROGS_arm64 += coalesced_io_test
 TEST_GEN_PROGS_arm64 += dirty_log_perf_test
 TEST_GEN_PROGS_arm64 += get-reg-list
+TEST_GEN_PROGS_arm64 += guest_memfd_test
 TEST_GEN_PROGS_arm64 += memslot_modification_stress_test
 TEST_GEN_PROGS_arm64 += memslot_perf_test
 TEST_GEN_PROGS_arm64 += mmu_stress_test
index ce687f8d248fcf9fe4523e77d597b44004448ace..341ba616cf554e8e320d1d44a2dfb5c03a7ebc5d 100644 (file)
@@ -146,24 +146,25 @@ static void test_create_guest_memfd_multiple(struct kvm_vm *vm)
 {
        int fd1, fd2, ret;
        struct stat st1, st2;
+       size_t page_size = getpagesize();
 
-       fd1 = __vm_create_guest_memfd(vm, 4096, 0);
+       fd1 = __vm_create_guest_memfd(vm, page_size, 0);
        TEST_ASSERT(fd1 != -1, "memfd creation should succeed");
 
        ret = fstat(fd1, &st1);
        TEST_ASSERT(ret != -1, "memfd fstat should succeed");
-       TEST_ASSERT(st1.st_size == 4096, "memfd st_size should match requested size");
+       TEST_ASSERT(st1.st_size == page_size, "memfd st_size should match requested size");
 
-       fd2 = __vm_create_guest_memfd(vm, 8192, 0);
+       fd2 = __vm_create_guest_memfd(vm, page_size * 2, 0);
        TEST_ASSERT(fd2 != -1, "memfd creation should succeed");
 
        ret = fstat(fd2, &st2);
        TEST_ASSERT(ret != -1, "memfd fstat should succeed");
-       TEST_ASSERT(st2.st_size == 8192, "second memfd st_size should match requested size");
+       TEST_ASSERT(st2.st_size == page_size * 2, "second memfd st_size should match requested size");
 
        ret = fstat(fd1, &st1);
        TEST_ASSERT(ret != -1, "memfd fstat should succeed");
-       TEST_ASSERT(st1.st_size == 4096, "first memfd st_size should still match requested size");
+       TEST_ASSERT(st1.st_size == page_size, "first memfd st_size should still match requested size");
        TEST_ASSERT(st1.st_ino != st2.st_ino, "different memfd should have different inode numbers");
 
        close(fd2);