From: Mukesh R <[email protected]> Sent: Tuesday, March 3, 2026 4:03 
PM
> 
> For unstated reasons, function mshv_partition_ioctl_set_memory passes
> struct mshv_user_mem_region by value instead of by reference. Change
> it to pass by reference.
> 
> Signed-off-by: Mukesh R <[email protected]>

Reviewed-by: Michael Kelley <[email protected]>

> ---
>  drivers/hv/mshv_root_main.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
> index e6509c980763..87c5ffd2528d 100644
> --- a/drivers/hv/mshv_root_main.c
> +++ b/drivers/hv/mshv_root_main.c
> @@ -1289,7 +1289,7 @@ static int mshv_prepare_pinned_region(struct 
> mshv_mem_region *region)
>   */
>  static long
>  mshv_map_user_memory(struct mshv_partition *partition,
> -                  struct mshv_user_mem_region mem)
> +                  struct mshv_user_mem_region *mem)
>  {
>       struct mshv_mem_region *region;
>       struct vm_area_struct *vma;
> @@ -1297,12 +1297,12 @@ mshv_map_user_memory(struct mshv_partition *partition,
>       ulong mmio_pfn;
>       long ret;
> 
> -     if (mem.flags & BIT(MSHV_SET_MEM_BIT_UNMAP) ||
> -         !access_ok((const void __user *)mem.userspace_addr, mem.size))
> +     if (mem->flags & BIT(MSHV_SET_MEM_BIT_UNMAP) ||
> +         !access_ok((const void __user *)mem->userspace_addr, mem->size))
>               return -EINVAL;
> 
>       mmap_read_lock(current->mm);
> -     vma = vma_lookup(current->mm, mem.userspace_addr);
> +     vma = vma_lookup(current->mm, mem->userspace_addr);
>       is_mmio = vma ? !!(vma->vm_flags & (VM_IO | VM_PFNMAP)) : 0;
>       mmio_pfn = is_mmio ? vma->vm_pgoff : 0;
>       mmap_read_unlock(current->mm);
> @@ -1310,7 +1310,7 @@ mshv_map_user_memory(struct mshv_partition *partition,
>       if (!vma)
>               return -EINVAL;
> 
> -     ret = mshv_partition_create_region(partition, &mem, &region,
> +     ret = mshv_partition_create_region(partition, mem, &region,
>                                          is_mmio);
>       if (ret)
>               return ret;
> @@ -1355,25 +1355,25 @@ mshv_map_user_memory(struct mshv_partition *partition,
>  /* Called for unmapping both the guest ram and the mmio space */
>  static long
>  mshv_unmap_user_memory(struct mshv_partition *partition,
> -                    struct mshv_user_mem_region mem)
> +                    struct mshv_user_mem_region *mem)
>  {
>       struct mshv_mem_region *region;
> 
> -     if (!(mem.flags & BIT(MSHV_SET_MEM_BIT_UNMAP)))
> +     if (!(mem->flags & BIT(MSHV_SET_MEM_BIT_UNMAP)))
>               return -EINVAL;
> 
>       spin_lock(&partition->pt_mem_regions_lock);
> 
> -     region = mshv_partition_region_by_gfn(partition, mem.guest_pfn);
> +     region = mshv_partition_region_by_gfn(partition, mem->guest_pfn);
>       if (!region) {
>               spin_unlock(&partition->pt_mem_regions_lock);
>               return -ENOENT;
>       }
> 
>       /* Paranoia check */
> -     if (region->start_uaddr != mem.userspace_addr ||
> -         region->start_gfn != mem.guest_pfn ||
> -         region->nr_pages != HVPFN_DOWN(mem.size)) {
> +     if (region->start_uaddr != mem->userspace_addr ||
> +         region->start_gfn != mem->guest_pfn ||
> +         region->nr_pages != HVPFN_DOWN(mem->size)) {
>               spin_unlock(&partition->pt_mem_regions_lock);
>               return -EINVAL;
>       }
> @@ -1404,9 +1404,9 @@ mshv_partition_ioctl_set_memory(struct mshv_partition 
> *partition,
>               return -EINVAL;
> 
>       if (mem.flags & BIT(MSHV_SET_MEM_BIT_UNMAP))
> -             return mshv_unmap_user_memory(partition, mem);
> +             return mshv_unmap_user_memory(partition, &mem);
> 
> -     return mshv_map_user_memory(partition, mem);
> +     return mshv_map_user_memory(partition, &mem);
>  }
> 
>  static long
> --
> 2.51.2.vfs.0.1
> 


Reply via email to