On Tue, Dec 02, 2025 at 06:39:51PM +0000, Michael Kelley wrote:
> From: Stanislav Kinsburskii <[email protected]> Sent: Tuesday, 
> November 25, 2025 6:09 PM
> > 
> > Refactor region overlap check in mshv_partition_create_region to use
> > mshv_partition_region_by_gfn for both start and end guest PFNs, replacing
> > manual iteration.
> > 
> > This is a cleaner approach that leverages existing functionality to
> > accurately detect overlapping memory regions.
> 
> Unfortunately, the cleaner approach doesn't work. :-( It doesn't detect a
> new region request that completely overlaps an existing region.
> 
> See 
> https://lore.kernel.org/linux-hyperv/[email protected]/T/#ma91254da1900de61da520acb96c0de38c43562f6.
> I couldn't see anything that prevents the scenario. Nuno created this 
> patch less than a month ago: 
> https://lore.kernel.org/linux-hyperv/1762467211-8213-2-git-send-email-nunodasne...@linux.microsoft.com/.
> 
> Michael
> 

I see. 
I'll drop it then.

Thanks,
Stanislav

> > 
> > Signed-off-by: Stanislav Kinsburskii <[email protected]>
> > ---
> >  drivers/hv/mshv_root_main.c |    8 ++------
> >  1 file changed, 2 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
> > index 5dfb933da981..ae600b927f49 100644
> > --- a/drivers/hv/mshv_root_main.c
> > +++ b/drivers/hv/mshv_root_main.c
> > @@ -1086,13 +1086,9 @@ static int mshv_partition_create_region(struct
> > mshv_partition *partition,
> >     u64 nr_pages = HVPFN_DOWN(mem->size);
> > 
> >     /* Reject overlapping regions */
> > -   hlist_for_each_entry(rg, &partition->pt_mem_regions, hnode) {
> > -           if (mem->guest_pfn + nr_pages <= rg->start_gfn ||
> > -               rg->start_gfn + rg->nr_pages <= mem->guest_pfn)
> > -                   continue;
> > -
> > +   if (mshv_partition_region_by_gfn(partition, mem->guest_pfn) ||
> > +       mshv_partition_region_by_gfn(partition, mem->guest_pfn + nr_pages - 
> > 1))
> >             return -EEXIST;
> > -   }
> > 
> >     rg = mshv_region_create(mem->guest_pfn, nr_pages,
> >                             mem->userspace_addr, mem->flags,
> > 
> > 
> 

Reply via email to