From: sashiko-bot@kernel.org
To: "Ackerley Tng" <ackerleytng@google.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH RFC 06/17] KVM: selftests: Test negative validation of resource_fd argument
Date: Sat, 26 Sep 2026 01:01:04 +0000 [thread overview]
Message-ID: <20260926010104.90EFC1F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260925-gmem-tmpfs-backend-v1-6-d36159822d18@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] kvm: selftests: backwards compatibility broken by unconditional resource_fd test
--
commit 2b17d287ef002db57e09b112a2ab9e4264aeefd9
Author: Ackerley Tng <ackerleytng@google.com>
KVM: selftests: Test negative validation of resource_fd argument
This commit adds negative test coverage to ensure that creating a guest_memfd
instance with a non-zero resource_fd without the GUEST_MEMFD_FLAG_USE_RESOURCE
flag fails with -EINVAL. It also verifies that using an invalid resource_fd
with the flag fails with -EBADF.
> diff --git a/tools/testing/selftests/kvm/guest_memfd_test.c b/tools/testing/selftests/kvm/guest_memfd_test.c
> index 2233d871a38f4..84b958b9ef715 100644
> --- a/tools/testing/selftests/kvm/guest_memfd_test.c
> +++ b/tools/testing/selftests/kvm/guest_memfd_test.c
[ ... ]
> @@ -418,6 +420,22 @@ static void test_guest_memfd_flags(struct kvm_vm *vm)
> }
> }
>
> +static void test_resource_fd_invalid(struct kvm_vm *vm)
> +{
> + int fd;
> +
> + /* Non-zero resource_fd without GUEST_MEMFD_FLAG_USE_RESOURCE fails */
> + fd = __vm_create_guest_memfd_resource(vm, page_size, 0, 1);
> + TEST_ASSERT(fd < 0, "guest_memfd with resource_fd but without flag should fail");
> + TEST_ASSERT_EQ(errno, EINVAL);
[Severity: Medium]
Will this ioctl unexpectedly succeed on older kernels that don't support
GUEST_MEMFD_FLAG_USE_RESOURCE?
Older kernels did not validate that the reserved array in
struct kvm_create_guest_memfd was strictly zeroed. Because resource_fd
replaces reserved[0], passing resource_fd = 1 with flags = 0 on an older kernel
will successfully create a guest_memfd rather than failing with -EINVAL,
causing spurious selftest failures.
> +
> + /* Bad file descriptor with GUEST_MEMFD_FLAG_USE_RESOURCE fails */
> + fd = __vm_create_guest_memfd_resource(vm, page_size,
> + GUEST_MEMFD_FLAG_USE_RESOURCE, -1);
> + TEST_ASSERT(fd < 0, "guest_memfd with -1 resource_fd should fail");
> + TEST_ASSERT_EQ(errno, EBADF);
[Severity: Medium]
Does this return -EINVAL instead of -EBADF on kernels lacking
GUEST_MEMFD_FLAG_USE_RESOURCE support?
Passing the unsupported GUEST_MEMFD_FLAG_USE_RESOURCE flag to an older kernel
returns -EINVAL instead of the -EBADF expected by this test, leading to test
failures.
> +}
> +
> #define ____gmem_test(__test, __vm, __flags, __gmem_size, args...) \
> do { \
> int fd = vm_create_guest_memfd(__vm, __gmem_size, __flags); \
[ ... ]
> @@ -476,6 +494,8 @@ static void test_guest_memfd(unsigned long vm_type)
>
> test_guest_memfd_flags(vm);
>
> + test_resource_fd_invalid(vm);
[Severity: Medium]
Is it intentional to call test_resource_fd_invalid() unconditionally here?
This bypasses the capability checks that properly gate other flag-dependent
tests. Calling it unconditionally breaks backwards compatibility for kselftests
when running against older kernels.
> +
> __test_guest_memfd(vm, 0);
>
> flags = vm_check_cap(vm, KVM_CAP_GUEST_MEMFD_FLAGS);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260925-gmem-tmpfs-backend-v1-0-d36159822d18@google.com?part=6
next prev parent reply other threads:[~2026-09-26 1:01 UTC|newest]
Thread overview: 58+ 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 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 0:50 ` Ackerley Tng
2026-09-26 1:01 ` sashiko-bot [this message]
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:50 ` Ackerley Tng
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 ` Ackerley Tng
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:50 ` Ackerley Tng
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:50 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 0:50 ` Ackerley Tng
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 ` Ackerley Tng
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 ` Ackerley Tng
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 ` Ackerley Tng
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 0:51 ` Ackerley Tng
2026-09-26 1:07 ` sashiko-bot
2026-09-26 0:51 ` [PATCH RFC 17/17] KVM: selftests: Document testing TODOs Ackerley Tng via B4 Relay
2026-09-26 0:51 ` Ackerley Tng
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
2026-10-12 14:11 ` Ackerley Tng
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=20260926010104.90EFC1F00893@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.