[PATCH 1/3] mm/io-mapping: precompute remap protection flags for clarity

Ye Liu posted 3 patches 7 months, 3 weeks ago
[PATCH 1/3] mm/io-mapping: precompute remap protection flags for clarity
Posted by Ye Liu 7 months, 3 weeks ago
From: Ye Liu <liuye@kylinos.cn>

In io_mapping_map_user(), precompute the page protection flags in a local
variable before calling remap_pfn_range_notrack().

No functional change.

Signed-off-by: Ye Liu <liuye@kylinos.cn>
---
 mm/io-mapping.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/mm/io-mapping.c b/mm/io-mapping.c
index 01b362799930..f44a6a134712 100644
--- a/mm/io-mapping.c
+++ b/mm/io-mapping.c
@@ -21,9 +21,10 @@ int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
 	if (WARN_ON_ONCE((vma->vm_flags & expected_flags) != expected_flags))
 		return -EINVAL;
 
+	pgprot_t remap_prot = __pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
+				       (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK));
+
 	/* We rely on prevalidation of the io-mapping to skip track_pfn(). */
-	return remap_pfn_range_notrack(vma, addr, pfn, size,
-		__pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
-			 (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK)));
+	return remap_pfn_range_notrack(vma, addr, pfn, size, remap_prot);
 }
 EXPORT_SYMBOL_GPL(io_mapping_map_user);
-- 
2.25.1
Re: [PATCH 1/3] mm/io-mapping: precompute remap protection flags for clarity
Posted by Mike Rapoport 7 months, 3 weeks ago
On Sun, Apr 27, 2025 at 06:04:40PM +0800, Ye Liu wrote:
> From: Ye Liu <liuye@kylinos.cn>
> 
> In io_mapping_map_user(), precompute the page protection flags in a local
> variable before calling remap_pfn_range_notrack().
> 
> No functional change.
> 
> Signed-off-by: Ye Liu <liuye@kylinos.cn>

Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

> ---
>  mm/io-mapping.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/io-mapping.c b/mm/io-mapping.c
> index 01b362799930..f44a6a134712 100644
> --- a/mm/io-mapping.c
> +++ b/mm/io-mapping.c
> @@ -21,9 +21,10 @@ int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
>  	if (WARN_ON_ONCE((vma->vm_flags & expected_flags) != expected_flags))
>  		return -EINVAL;
>  
> +	pgprot_t remap_prot = __pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> +				       (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK));
> +
>  	/* We rely on prevalidation of the io-mapping to skip track_pfn(). */
> -	return remap_pfn_range_notrack(vma, addr, pfn, size,
> -		__pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> -			 (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK)));
> +	return remap_pfn_range_notrack(vma, addr, pfn, size, remap_prot);
>  }
>  EXPORT_SYMBOL_GPL(io_mapping_map_user);
> -- 
> 2.25.1
> 

-- 
Sincerely yours,
Mike.
Re: [PATCH 1/3] mm/io-mapping: precompute remap protection flags for clarity
Posted by Anshuman Khandual 7 months, 3 weeks ago
On 4/27/25 15:34, Ye Liu wrote:
> From: Ye Liu <liuye@kylinos.cn>
> 
> In io_mapping_map_user(), precompute the page protection flags in a local
> variable before calling remap_pfn_range_notrack().
> 
> No functional change.
> 
> Signed-off-by: Ye Liu <liuye@kylinos.cn>
> ---
>  mm/io-mapping.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/io-mapping.c b/mm/io-mapping.c
> index 01b362799930..f44a6a134712 100644
> --- a/mm/io-mapping.c
> +++ b/mm/io-mapping.c
> @@ -21,9 +21,10 @@ int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
>  	if (WARN_ON_ONCE((vma->vm_flags & expected_flags) != expected_flags))
>  		return -EINVAL;
>  
> +	pgprot_t remap_prot = __pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> +				       (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK));
> +
>  	/* We rely on prevalidation of the io-mapping to skip track_pfn(). */
> -	return remap_pfn_range_notrack(vma, addr, pfn, size,
> -		__pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> -			 (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK)));
> +	return remap_pfn_range_notrack(vma, addr, pfn, size, remap_prot);
>  }
>  EXPORT_SYMBOL_GPL(io_mapping_map_user);

Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Re: [PATCH 1/3] mm/io-mapping: precompute remap protection flags for clarity
Posted by David Hildenbrand 7 months, 3 weeks ago
On 27.04.25 12:04, Ye Liu wrote:
> From: Ye Liu <liuye@kylinos.cn>
> 
> In io_mapping_map_user(), precompute the page protection flags in a local
> variable before calling remap_pfn_range_notrack().
> 
> No functional change.
> 
> Signed-off-by: Ye Liu <liuye@kylinos.cn>
> ---
>   mm/io-mapping.c | 7 ++++---
>   1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/io-mapping.c b/mm/io-mapping.c
> index 01b362799930..f44a6a134712 100644
> --- a/mm/io-mapping.c
> +++ b/mm/io-mapping.c
> @@ -21,9 +21,10 @@ int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
>   	if (WARN_ON_ONCE((vma->vm_flags & expected_flags) != expected_flags))
>   		return -EINVAL;
>   
> +	pgprot_t remap_prot = __pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> +				       (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK));
> +
>   	/* We rely on prevalidation of the io-mapping to skip track_pfn(). */
> -	return remap_pfn_range_notrack(vma, addr, pfn, size,
> -		__pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) |
> -			 (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK)));
> +	return remap_pfn_range_notrack(vma, addr, pfn, size, remap_prot);
>   }
>   EXPORT_SYMBOL_GPL(io_mapping_map_user);

Reviewed-by: David Hildenbrand <david@redhat.com>

-- 
Cheers,

David / dhildenb