All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Gavin Shan <gshan@redhat.com>
Cc: will@kernel.org, kvmarm@lists.cs.columbia.edu,
	shan.gavin@gmail.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] KVM: arm64: Use find_vma_intersection()
Date: Mon, 15 Mar 2021 08:52:38 +0000	[thread overview]
Message-ID: <87eeggg5nt.wl-maz@kernel.org> (raw)
In-Reply-To: <20210315041844.64915-3-gshan@redhat.com>

On Mon, 15 Mar 2021 04:18:42 +0000,
Gavin Shan <gshan@redhat.com> wrote:
> 
> find_vma_intersection() has been existing to search the intersected
> vma. This uses the function where it's applicable, to simplify the
> code.
> 
> Signed-off-by: Gavin Shan <gshan@redhat.com>
> ---
>  arch/arm64/kvm/mmu.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
> index 84e70f953de6..286b603ed0d3 100644
> --- a/arch/arm64/kvm/mmu.c
> +++ b/arch/arm64/kvm/mmu.c
> @@ -421,10 +421,11 @@ static void stage2_unmap_memslot(struct kvm *kvm,
>  	 *     +--------------------------------------------+
>  	 */
>  	do {
> -		struct vm_area_struct *vma = find_vma(current->mm, hva);
> +		struct vm_area_struct *vma;
>  		hva_t vm_start, vm_end;
>  
> -		if (!vma || vma->vm_start >= reg_end)
> +		vma = find_vma_intersection(current->mm, hva, reg_end);

For context, here's the definition of find_vma_intersection():

<quote>
static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
{
	struct vm_area_struct * vma = find_vma(mm,start_addr);

	if (vma && end_addr <= vma->vm_start)
		vma = NULL;
	return vma;
}
</quote>

It seems that there is a boundary issue in either the old code or the
new one in the case where (reg_end == vma->start).

Which one is which?

	M.

-- 
Without deviation from the norm, progress is not possible.
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: Gavin Shan <gshan@redhat.com>
Cc: kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
	will@kernel.org, alexandru.elisei@arm.com, shan.gavin@gmail.com
Subject: Re: [PATCH 2/4] KVM: arm64: Use find_vma_intersection()
Date: Mon, 15 Mar 2021 08:52:38 +0000	[thread overview]
Message-ID: <87eeggg5nt.wl-maz@kernel.org> (raw)
In-Reply-To: <20210315041844.64915-3-gshan@redhat.com>

On Mon, 15 Mar 2021 04:18:42 +0000,
Gavin Shan <gshan@redhat.com> wrote:
> 
> find_vma_intersection() has been existing to search the intersected
> vma. This uses the function where it's applicable, to simplify the
> code.
> 
> Signed-off-by: Gavin Shan <gshan@redhat.com>
> ---
>  arch/arm64/kvm/mmu.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
> index 84e70f953de6..286b603ed0d3 100644
> --- a/arch/arm64/kvm/mmu.c
> +++ b/arch/arm64/kvm/mmu.c
> @@ -421,10 +421,11 @@ static void stage2_unmap_memslot(struct kvm *kvm,
>  	 *     +--------------------------------------------+
>  	 */
>  	do {
> -		struct vm_area_struct *vma = find_vma(current->mm, hva);
> +		struct vm_area_struct *vma;
>  		hva_t vm_start, vm_end;
>  
> -		if (!vma || vma->vm_start >= reg_end)
> +		vma = find_vma_intersection(current->mm, hva, reg_end);

For context, here's the definition of find_vma_intersection():

<quote>
static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
{
	struct vm_area_struct * vma = find_vma(mm,start_addr);

	if (vma && end_addr <= vma->vm_start)
		vma = NULL;
	return vma;
}
</quote>

It seems that there is a boundary issue in either the old code or the
new one in the case where (reg_end == vma->start).

Which one is which?

	M.

-- 
Without deviation from the norm, progress is not possible.

  parent reply	other threads:[~2021-03-15  8:52 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-15  4:18 [PATCH 0/4] KVM: arm64: Minor page fault handler improvement Gavin Shan
2021-03-15  4:18 ` Gavin Shan
2021-03-15  4:18 ` [PATCH 1/4] KVM: arm64: Hide kvm_mmu_wp_memory_region() Gavin Shan
2021-03-15  4:18   ` Gavin Shan
2021-03-15  7:49   ` Keqian Zhu
2021-03-15  7:49     ` Keqian Zhu
2021-03-15  4:18 ` [PATCH 2/4] KVM: arm64: Use find_vma_intersection() Gavin Shan
2021-03-15  4:18   ` Gavin Shan
2021-03-15  8:04   ` Keqian Zhu
2021-03-15  8:04     ` Keqian Zhu
2021-03-15  9:42     ` Gavin Shan
2021-03-15  9:42       ` Gavin Shan
2021-03-16  3:52       ` Gavin Shan
2021-03-16  3:52         ` Gavin Shan
2021-03-16  4:20         ` Keqian Zhu
2021-03-16  4:20           ` Keqian Zhu
2021-03-15  8:52   ` Marc Zyngier [this message]
2021-03-15  8:52     ` Marc Zyngier
2021-03-15  9:40     ` Gavin Shan
2021-03-15  9:40       ` Gavin Shan
2021-03-15  4:18 ` [PATCH 3/4] KVM: arm64: Fix address check for memory slot Gavin Shan
2021-03-15  4:18   ` Gavin Shan
2021-03-15  7:33   ` Keqian Zhu
2021-03-15  7:33     ` Keqian Zhu
2021-03-15  9:46     ` Gavin Shan
2021-03-15  9:46       ` Gavin Shan
2021-03-15  4:18 ` [PATCH 4/4] KVM: arm64: Don't retrieve memory slot again in page fault handler Gavin Shan
2021-03-15  4:18   ` Gavin Shan
2021-03-15  8:25   ` Keqian Zhu
2021-03-15  8:25     ` Keqian Zhu
2021-03-15  9:56     ` Gavin Shan
2021-03-15  9:56       ` Gavin Shan
2021-03-15 10:46       ` Keqian Zhu
2021-03-15 10:46         ` Keqian Zhu

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=87eeggg5nt.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=gshan@redhat.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shan.gavin@gmail.com \
    --cc=will@kernel.org \
    /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.