From: sashiko-bot@kernel.org
To: "Ackerley Tng" <ackerleytng@google.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH RFC 16/17] KVM: selftests: Test guest execution with tmpfs-backed guest_memfd
Date: Sat, 26 Sep 2026 01:07:21 +0000 [thread overview]
Message-ID: <20260926010722.2D6871F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260925-gmem-tmpfs-backend-v1-16-d36159822d18@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] selftests: guest_memfd: tmpfs pool capacity mismatch causes ENOSPC
- [Medium] selftests: guest_memfd: missing backward compatibility check for USE_RESOURCE flag
--
commit 1a86f5779ff5f4e3456d291df1f061ef3218958b
Author: Ackerley Tng <ackerleytng@google.com>
KVM: selftests: Test guest execution with tmpfs-backed guest_memfd
Test that a guest vCPU can execute instructions and read/write memory
mapped into a guest_memfd instance that is backed by a tmpfs resource
pool descriptor.
> diff --git a/tools/testing/selftests/kvm/guest_memfd_test.c b/tools/testing/selftests/kvm/guest_memfd_test.c
> index 345b41c912a18..bf369874f2647 100644
> --- a/tools/testing/selftests/kvm/guest_memfd_test.c
> +++ b/tools/testing/selftests/kvm/guest_memfd_test.c
[ ... ]
> @@ -829,6 +829,62 @@ static void test_guest_memfd_guest(void)
> kvm_vm_free(vm);
> }
>
> +static void test_guest_memfd_guest_resource(void)
> +{
> + const gpa_t gpa = SZ_4G;
> + const int slot = 1;
> + struct kvm_vcpu *vcpu;
> + struct kvm_vm *vm;
> + int pool_fd, fd, i;
> + size_t size;
> + u8 *mem;
> +
> + if (!kvm_check_cap(KVM_CAP_GUEST_MEMFD_FLAGS))
> + return;
> +
> + pool_fd = create_tmpfs_pool_fd("never", true, page_size);
> + if (pool_fd < 0)
> + TEST_REQUIRE(false);
> +
> + vm = __vm_create_shape_with_one_vcpu(VM_SHAPE_DEFAULT, &vcpu, 1, guest_code);
> +
> + TEST_ASSERT(vm_check_cap(vm, KVM_CAP_GUEST_MEMFD_FLAGS) & GUEST_MEMFD_FLAG_MMAP,
> + "Default VM type should support MMAP, supported flags = 0x%x",
> + vm_check_cap(vm, KVM_CAP_GUEST_MEMFD_FLAGS));
> + TEST_ASSERT(vm_check_cap(vm, KVM_CAP_GUEST_MEMFD_FLAGS) & GUEST_MEMFD_FLAG_INIT_SHARED,
> + "Default VM type should support INIT_SHARED, supported flags = 0x%x",
> + vm_check_cap(vm, KVM_CAP_GUEST_MEMFD_FLAGS));
> +
> + size = max_t(size_t, vm->page_size, page_size);
[Severity: Medium]
Will this capacity mismatch cause the test to fail unconditionally with
ENOSPC when the guest page size exceeds the host page size?
The tmpfs pool is sized statically to the host page_size earlier in the
function, before the required guest memory size is dynamically calculated
here. This could structurally prevent the test from passing on architectures
with larger guest page sizes (e.g. ARM64).
> + fd = __vm_create_guest_memfd_resource(vm, size,
> + GUEST_MEMFD_FLAG_MMAP |
> + GUEST_MEMFD_FLAG_INIT_SHARED |
> + GUEST_MEMFD_FLAG_USE_RESOURCE,
> + pool_fd);
> + TEST_ASSERT(fd >= 0, "guest_memfd with tmpfs pool should succeed");
[Severity: Medium]
Could this crash with an assertion failure instead of gracefully skipping
when run against older kernels?
The GUEST_MEMFD_FLAG_USE_RESOURCE flag is passed here without validating
whether it is present in the KVM_CAP_GUEST_MEMFD_FLAGS bitmask, which is
required for backward compatibility with kernels lacking support for this flag.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260925-gmem-tmpfs-backend-v1-0-d36159822d18@google.com?part=16
next prev parent reply other threads:[~2026-09-26 1:07 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-26 0:50 [PATCH RFC 00/17] Allow guest_memfd to be created using a resource (pool) fd Ackerley Tng via B4 Relay
2026-09-26 0:50 ` [PATCH RFC 01/17] mm: shmem: Implement guest_memfd provider operations for tmpfs Ackerley Tng via B4 Relay
2026-09-26 1:08 ` sashiko-bot
2026-10-01 13:07 ` David Woodhouse
2026-10-01 14:17 ` Jason Gunthorpe
2026-10-01 15:47 ` David Woodhouse
2026-10-01 17:15 ` Jason Gunthorpe
2026-09-26 0:50 ` [PATCH RFC 02/17] KVM: guest_memfd: Support provider folio allocation Ackerley Tng via B4 Relay
2026-09-26 1:00 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 03/17] KVM: guest_memfd: Support provider folio invalidation Ackerley Tng via B4 Relay
2026-09-26 0:50 ` [PATCH RFC 04/17] KVM: guest_memfd: Add helper to attach resource provider file Ackerley Tng via B4 Relay
2026-09-26 1:13 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 05/17] KVM: selftests: Add helper to create guest_memfd with a resource file Ackerley Tng via B4 Relay
2026-09-26 1:00 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 06/17] KVM: selftests: Test negative validation of resource_fd argument Ackerley Tng via B4 Relay
2026-09-26 1:01 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 07/17] KVM: selftests: Test rejection of unsupported filesystem for resource_fd Ackerley Tng via B4 Relay
2026-09-26 0:56 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 08/17] KVM: selftests: Test rejection of tmpfs file " Ackerley Tng via B4 Relay
2026-09-26 0:50 ` [PATCH RFC 09/17] KVM: selftests: Test rejection of swap tmpfs mounts Ackerley Tng via B4 Relay
2026-09-26 0:57 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 10/17] KVM: selftests: Test rejection of hugepage " Ackerley Tng via B4 Relay
2026-09-26 0:58 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 11/17] KVM: selftests: Test guest_memfd with anonymous fsmount() tmpfs pool Ackerley Tng via B4 Relay
2026-09-26 1:02 ` sashiko-bot
2026-09-26 0:50 ` [PATCH RFC 12/17] KVM: selftests: Test guest_memfd with mounted tmpfs root directory Ackerley Tng via B4 Relay
2026-09-26 1:01 ` sashiko-bot
2026-09-26 0:51 ` [PATCH RFC 13/17] KVM: selftests: Test guest_memfd resource pool sharing across instances Ackerley Tng via B4 Relay
2026-09-26 0:51 ` [PATCH RFC 14/17] KVM: selftests: Test memory allocation against shared tmpfs resource pool Ackerley Tng via B4 Relay
2026-09-26 0:51 ` [PATCH RFC 15/17] KVM: selftests: Test that shared tmpfs resource pool size limit is respected Ackerley Tng via B4 Relay
2026-09-26 0:51 ` [PATCH RFC 16/17] KVM: selftests: Test guest execution with tmpfs-backed guest_memfd Ackerley Tng via B4 Relay
2026-09-26 1:07 ` sashiko-bot [this message]
2026-09-26 0:51 ` [PATCH RFC 17/17] KVM: selftests: Document testing TODOs Ackerley Tng via B4 Relay
2026-09-28 16:32 ` [PATCH RFC 00/17] Allow guest_memfd to be created using a resource (pool) fd David Woodhouse
2026-09-28 22:59 ` Ackerley Tng
2026-09-29 16:17 ` David Woodhouse
2026-09-29 23:41 ` Ackerley Tng
2026-09-30 0:08 ` David Woodhouse
2026-10-01 13:43 ` Gregory Price
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260926010722.2D6871F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ackerleytng@google.com \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox