All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Valery Borovsky" <vebohr@gmail.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH] KVM: selftests: verify toggling KVM_MEM_GUEST_MEMFD on an existing slot is rejected
Date: Wed, 05 Aug 2026 06:10:27 +0000	[thread overview]
Message-ID: <20260805061027.C07741F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260805055830.740175-1-vebohr@gmail.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The commit message incorrectly claims that both directions of toggling KVM_MEM_GUEST_MEMFD are enforced by the XOR flags mask.
- [Low] The second test case reuses a memfd and offset that are already bound, which could lead to shadowed errors if KVM validation ordering changes.
--

--- Patch [1]: [PATCH] KVM: selftests: verify toggling KVM_MEM_GUEST_MEMFD on an existing slot is rejected ---
commit bf15eec5cbe6f11d42dcd195f6bac07b5502de7d
Author: Valery Borovsky <vebohr@gmail.com>

KVM: selftests: verify toggling KVM_MEM_GUEST_MEMFD on an existing slot is rejected

This commit adds a new test case, test_toggle_private_memory_region(), to
the set_memory_region_test. It verifies that KVM rejects attempts to both
clear KVM_MEM_GUEST_MEMFD on a private slot and set it on a slot created
without it.

> Add test_toggle_private_memory_region() to close that gap. It asserts
> both directions are rejected with EINVAL:
> 
>   1. clearing KVM_MEM_GUEST_MEMFD on a private slot;
>   2. setting KVM_MEM_GUEST_MEMFD on a slot created without it.
> 
> Both are enforced by the flags mask in kvm_set_memory_region():
> 
>   (mem->flags ^ old->flags) & (KVM_MEM_READONLY | KVM_MEM_GUEST_MEMFD)

[Severity: Medium]
Is this explanation entirely accurate for direction 2 (setting the flag)?

Looking at kvm_set_memory_region() in virt/kvm/kvm_main.c, setting
KVM_MEM_GUEST_MEMFD on an existing slot seems to be explicitly rejected
earlier in the function:

if (mem->flags & KVM_MEM_GUEST_MEMFD)
        return -EINVAL;

Could the commit message be updated to clarify that direction 2 is caught by
this early check before the XOR flags mask is evaluated?

> diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/testing/selftests/kvm/set_memory_region_test.c
> index a152ab65c6577..8fb2e7a96f6cd 100644
> --- a/tools/testing/selftests/kvm/set_memory_region_test.c
> +++ b/tools/testing/selftests/kvm/set_memory_region_test.c

[ ... ]

> @@ -500,6 +500,50 @@ static void test_add_private_memory_region(void)
>  	kvm_vm_free(vm);
>  }
>  
> +static void test_toggle_private_memory_region(void)
> +{

[ ... ]

> +	/*
> +	 * Symmetrically, attempting to set KVM_MEM_GUEST_MEMFD on a slot
> +	 * that was created without it must also be rejected.
> +	 */
> +	vm_set_user_memory_region(vm, MEM_REGION_SLOT + 1, 0,
> +				  MEM_REGION_GPA * 2, MEM_REGION_SIZE, NULL);
> +	r = __vm_set_user_memory_region2(vm, MEM_REGION_SLOT + 1,
> +					 KVM_MEM_GUEST_MEMFD,
> +					 MEM_REGION_GPA * 2, MEM_REGION_SIZE,
> +					 0, memfd, 0);

[Severity: Low]
Does reusing the same memfd and offset 0 make this test unnecessarily brittle?

This call uses a memfd and offset that were already successfully bound to
MEM_REGION_SLOT earlier in the test function. If KVM were to ever reorder
its internal validation and evaluate kvm_gmem_bind() before rejecting the
immutable flag toggle, wouldn't this return -EEXIST due to the already-bound
range, causing a false test failure instead of the expected -EINVAL?

Would it be safer to use a fresh memfd or a non-overlapping offset to
strictly isolate the flag toggle validation?

> +	TEST_ASSERT(r == -1 && errno == EINVAL,
> +		    "Setting KVM_MEM_GUEST_MEMFD should have failed with EINVAL, got r=%d errno=%d", r, errno);
> +
> +	close(memfd);
> +	kvm_vm_free(vm);
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260805055830.740175-1-vebohr@gmail.com?part=1

      reply	other threads:[~2026-08-05  6:10 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-05  5:58 [PATCH] KVM: selftests: verify toggling KVM_MEM_GUEST_MEMFD on an existing slot is rejected Valery Borovsky
2026-08-05  6:10 ` sashiko-bot [this message]

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=20260805061027.C07741F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vebohr@gmail.com \
    /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.