[PATCH] RISC-V: KVM: Use find_vma_intersection() to search for intersecting VMAs

zhouquan@iscas.ac.cn posted 1 patch 3 months, 3 weeks ago
arch/riscv/kvm/mmu.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH] RISC-V: KVM: Use find_vma_intersection() to search for intersecting VMAs
Posted by zhouquan@iscas.ac.cn 3 months, 3 weeks ago
From: Quan Zhou <zhouquan@iscas.ac.cn>

There is already a helper function find_vma_intersection() in KVM
for searching intersecting VMAs, use it directly.

Signed-off-by: Quan Zhou <zhouquan@iscas.ac.cn>
---
 arch/riscv/kvm/mmu.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
index b63650f9b966..3452a8b77af3 100644
--- a/arch/riscv/kvm/mmu.c
+++ b/arch/riscv/kvm/mmu.c
@@ -487,10 +487,11 @@ int kvm_arch_prepare_memory_region(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);
+		if (!vma)
 			break;
 
 		/*
-- 
2.34.1
Re: [PATCH] RISC-V: KVM: Use find_vma_intersection() to search for intersecting VMAs
Posted by Anup Patel 2 months, 3 weeks ago
On Tue, Jun 17, 2025 at 6:43 PM <zhouquan@iscas.ac.cn> wrote:
>
> From: Quan Zhou <zhouquan@iscas.ac.cn>
>
> There is already a helper function find_vma_intersection() in KVM
> for searching intersecting VMAs, use it directly.
>
> Signed-off-by: Quan Zhou <zhouquan@iscas.ac.cn>

LGTM.

Reviewed-by: Anup Patel <anup@brainfault.org>

Queued this patch for Linux-6.17

Thanks,
Anup

> ---
>  arch/riscv/kvm/mmu.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
> index b63650f9b966..3452a8b77af3 100644
> --- a/arch/riscv/kvm/mmu.c
> +++ b/arch/riscv/kvm/mmu.c
> @@ -487,10 +487,11 @@ int kvm_arch_prepare_memory_region(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);
> +               if (!vma)
>                         break;
>
>                 /*
> --
> 2.34.1
>